tlc-claude-code 0.6.0 → 0.6.2
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/PROJECT.md +46 -0
- package/README.md +127 -58
- package/bin/install.js +2 -1
- package/dashboard/package.json +34 -0
- package/help.md +99 -115
- package/import-project.md +246 -0
- package/package.json +9 -2
- package/tlc.md +197 -217
package/PROJECT.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# TLC - Test Led Coding
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
TLC is a Claude Code workflow that enforces test-driven development. It provides slash commands (`/tlc`, `/tlc:new-project`, `/tlc:init`, etc.) that guide developers to write tests before implementation.
|
|
6
|
+
|
|
7
|
+
## Tech Stack
|
|
8
|
+
|
|
9
|
+
- **Runtime:** Node.js
|
|
10
|
+
- **Package:** npm (tlc-claude-code)
|
|
11
|
+
- **Dashboard:** React + Ink (terminal UI)
|
|
12
|
+
- **Testing:** Vitest
|
|
13
|
+
- **Language:** TypeScript
|
|
14
|
+
|
|
15
|
+
## Project Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
TLC/
|
|
19
|
+
├── bin/
|
|
20
|
+
│ └── install.js # CLI installer (npx tlc-claude-code)
|
|
21
|
+
├── dashboard/
|
|
22
|
+
│ └── src/
|
|
23
|
+
│ ├── App.tsx # Main TUI app
|
|
24
|
+
│ ├── index.tsx # Entry point
|
|
25
|
+
│ └── components/ # UI panes (Chat, GitHub, Agents, etc.)
|
|
26
|
+
├── *.md # Slash command definitions
|
|
27
|
+
└── package.json # npm package config
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Development Methodology: Test-Led Development
|
|
31
|
+
|
|
32
|
+
This project uses TLC. All new implementation follows Red -> Green -> Refactor:
|
|
33
|
+
|
|
34
|
+
1. **Red**: Write failing tests that define expected behavior
|
|
35
|
+
2. **Green**: Write minimum code to make tests pass
|
|
36
|
+
3. **Refactor**: Clean up while keeping tests green
|
|
37
|
+
|
|
38
|
+
Tests are written BEFORE implementation, not after.
|
|
39
|
+
|
|
40
|
+
## Test Framework
|
|
41
|
+
|
|
42
|
+
- **Framework:** Vitest
|
|
43
|
+
- **Run tests:** `cd dashboard && npm test`
|
|
44
|
+
- **Watch mode:** `cd dashboard && npm run test:watch`
|
|
45
|
+
- **Test directory:** `dashboard/src/` (co-located with source)
|
|
46
|
+
- **Pattern:** `*.test.ts`, `*.test.tsx`
|
package/README.md
CHANGED
|
@@ -30,23 +30,98 @@ No manual testing. No "does this work?" No vibes.
|
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## Getting Started
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
### New Project
|
|
36
|
+
|
|
37
|
+
Starting from scratch? TLC guides you through everything.
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
/tlc:new-project
|
|
37
41
|
```
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
1. **Discuss requirements** — What are you building? Who uses it? What scale?
|
|
44
|
+
2. **Choose stack** — TLC suggests tech based on your answers, you approve or adjust
|
|
45
|
+
3. **Create roadmap** — Break work into phases
|
|
46
|
+
4. **Build with tests** — Each phase: write tests first, then implement
|
|
47
|
+
|
|
48
|
+
### Existing Project
|
|
49
|
+
|
|
50
|
+
Have code already? TLC adds test coverage without disrupting your workflow.
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
/tlc:init
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
1. **Scan codebase** — TLC detects your stack, test framework, project structure
|
|
57
|
+
2. **Find gaps** — Identifies files without tests, prioritizes critical paths
|
|
58
|
+
3. **Write tests** — Adds tests one file at a time, starting with highest priority
|
|
59
|
+
4. **Continue normally** — New features use test-first approach going forward
|
|
60
|
+
|
|
61
|
+
### After Setup
|
|
62
|
+
|
|
63
|
+
Once initialized, just run:
|
|
40
64
|
|
|
41
65
|
```
|
|
42
66
|
/tlc
|
|
43
67
|
```
|
|
44
68
|
|
|
45
|
-
|
|
69
|
+
TLC knows where you are and what's next. No phase numbers to remember.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Handling Untested Code
|
|
74
|
+
|
|
75
|
+
Code comes from many sources. Not all of it has tests.
|
|
76
|
+
|
|
77
|
+
### External PRs / Other Developers
|
|
78
|
+
|
|
79
|
+
Someone pushes code without tests? TLC catches it.
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
> /tlc
|
|
83
|
+
|
|
84
|
+
Found 3 new files without tests:
|
|
85
|
+
- src/api/webhooks.ts (added 2 days ago)
|
|
86
|
+
- src/utils/retry.ts (added 2 days ago)
|
|
87
|
+
- src/services/notify.ts (added yesterday)
|
|
88
|
+
|
|
89
|
+
Add tests now? (Y/n)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
TLC tracks what's tested. When new untested code appears, it flags it.
|
|
93
|
+
|
|
94
|
+
### After "Vibe Coding" Sessions
|
|
95
|
+
|
|
96
|
+
Built something fast without tests? No judgment. Run:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
/tlc:coverage
|
|
100
|
+
```
|
|
46
101
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
102
|
+
TLC scans everything, creates a prioritized backlog:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Coverage: 67% (24/36 files)
|
|
106
|
+
|
|
107
|
+
Critical (no tests):
|
|
108
|
+
- src/auth/session.ts ← security
|
|
109
|
+
- src/payments/charge.ts ← money
|
|
110
|
+
|
|
111
|
+
High priority:
|
|
112
|
+
- src/api/users.ts
|
|
113
|
+
- src/api/orders.ts
|
|
114
|
+
|
|
115
|
+
Add to backlog and start? (Y/n)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Continuous Coverage
|
|
119
|
+
|
|
120
|
+
TLC integrates with your workflow:
|
|
121
|
+
|
|
122
|
+
- **Before builds** — `/tlc:status` shows pass/fail counts
|
|
123
|
+
- **Before releases** — `/tlc:coverage` ensures nothing slipped through
|
|
124
|
+
- **Daily habit** — `/tlc` reminds you of untested code
|
|
50
125
|
|
|
51
126
|
---
|
|
52
127
|
|
|
@@ -56,10 +131,10 @@ Mid-project? It picks up where you left off.
|
|
|
56
131
|
|---------|------|
|
|
57
132
|
| `/tlc` | **Smart entry point. Knows what's next.** |
|
|
58
133
|
| `/tlc:new-project` | Start fresh. Discuss stack, scaffold. |
|
|
59
|
-
| `/tlc:init` | Add TLC to existing
|
|
60
|
-
| `/tlc:coverage` | Find untested
|
|
61
|
-
| `/tlc:
|
|
62
|
-
| `/tlc:
|
|
134
|
+
| `/tlc:init` | Add TLC to existing codebase. |
|
|
135
|
+
| `/tlc:coverage` | Find untested code, write tests. |
|
|
136
|
+
| `/tlc:status` | Test pass/fail counts. |
|
|
137
|
+
| `/tlc:quick` | One-off task with tests. |
|
|
63
138
|
|
|
64
139
|
---
|
|
65
140
|
|
|
@@ -73,7 +148,11 @@ TLC: plan → **write failing tests** → build until tests pass
|
|
|
73
148
|
|
|
74
149
|
The tests *are* the spec. No ambiguity.
|
|
75
150
|
|
|
76
|
-
### 2.
|
|
151
|
+
### 2. Catches Coverage Gaps
|
|
152
|
+
|
|
153
|
+
New code without tests? TLC notices. External PRs? Flagged. Post-hackathon cleanup? Prioritized backlog ready.
|
|
154
|
+
|
|
155
|
+
### 3. Smart Stack Selection
|
|
77
156
|
|
|
78
157
|
Don't pick tech in a vacuum. TLC asks what you're building, who uses it, what scale — then suggests the right stack.
|
|
79
158
|
|
|
@@ -86,72 +165,56 @@ Data: Simple CRUD
|
|
|
86
165
|
→ Why: Fast to build, cheap to host, fits your needs
|
|
87
166
|
```
|
|
88
167
|
|
|
89
|
-
###
|
|
168
|
+
### 4. Works With Your Team
|
|
90
169
|
|
|
91
|
-
|
|
170
|
+
TLC doesn't require everyone to use it. You can:
|
|
171
|
+
- Add TLC to a project others contribute to
|
|
172
|
+
- Catch untested code from any source
|
|
173
|
+
- Gradually improve coverage over time
|
|
92
174
|
|
|
93
|
-
|
|
94
|
-
┌──────────────────────────────────────────────────────┐
|
|
95
|
-
│ Agents │
|
|
96
|
-
│ [1] ● Working on #42: Auth flow │
|
|
97
|
-
│ [2] ● Working on #43: User CRUD │
|
|
98
|
-
│ [3] ○ Idle │
|
|
99
|
-
└──────────────────────────────────────────────────────┘
|
|
100
|
-
```
|
|
175
|
+
---
|
|
101
176
|
|
|
102
|
-
|
|
177
|
+
## Workflow Examples
|
|
103
178
|
|
|
104
|
-
|
|
179
|
+
### Solo Developer, New Project
|
|
105
180
|
|
|
106
|
-
|
|
181
|
+
```
|
|
182
|
+
/tlc:new-project → Discuss requirements, choose stack
|
|
183
|
+
/tlc → Build phase 1 (tests first)
|
|
184
|
+
/tlc → Build phase 2 (tests first)
|
|
185
|
+
...
|
|
186
|
+
/tlc:complete → Tag release
|
|
187
|
+
```
|
|
107
188
|
|
|
108
|
-
|
|
189
|
+
### Team Project, Existing Codebase
|
|
109
190
|
|
|
110
|
-
|
|
191
|
+
```
|
|
192
|
+
/tlc:init → Set up TLC, scan codebase
|
|
193
|
+
/tlc:coverage → Write tests for critical paths
|
|
194
|
+
/tlc → Continue with test-first for new work
|
|
195
|
+
```
|
|
111
196
|
|
|
112
|
-
|
|
197
|
+
### After External Contributions
|
|
113
198
|
|
|
114
199
|
```
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
│ Building login endpoint... │ #43 User CRUD │
|
|
119
|
-
│ ✓ Created tests/auth.test.ts │ #44 Dashboard │
|
|
120
|
-
│ ✓ Tests failing (expected) ├──────────────────────┤
|
|
121
|
-
│ Implementing... │ Agents (2/3) │
|
|
122
|
-
│ │ [1] ● #42 │
|
|
123
|
-
│ │ [2] ● #43 │
|
|
124
|
-
│ │ [3] ○ Idle │
|
|
125
|
-
├─────────────────────────────────┼──────────────────────┤
|
|
126
|
-
│ > add password reset flow │ Tests: 23/23 ✓ │
|
|
127
|
-
└─────────────────────────────────┴──────────────────────┘
|
|
200
|
+
git pull → Get latest changes
|
|
201
|
+
/tlc → "Found 2 untested files. Add tests?"
|
|
202
|
+
y → Tests written for new code
|
|
128
203
|
```
|
|
129
204
|
|
|
130
|
-
TUI dashboard. Multiple panes. Real-time updates.
|
|
131
|
-
|
|
132
205
|
---
|
|
133
206
|
|
|
134
207
|
## Philosophy
|
|
135
208
|
|
|
136
209
|
**Tests define behavior. Code makes tests pass.**
|
|
137
210
|
|
|
138
|
-
- Tests written BEFORE code
|
|
139
|
-
-
|
|
140
|
-
-
|
|
211
|
+
- Tests written BEFORE code (for new features)
|
|
212
|
+
- Untested code gets flagged (for external contributions)
|
|
213
|
+
- Coverage gaps get prioritized (for legacy code)
|
|
141
214
|
- Human verification still happens — tests catch logic errors, you catch "not what I meant"
|
|
142
215
|
|
|
143
216
|
---
|
|
144
217
|
|
|
145
|
-
## vs Other Approaches
|
|
146
|
-
|
|
147
|
-
| Approach | Process | Result |
|
|
148
|
-
|----------|---------|--------|
|
|
149
|
-
| Vibe coding | Build → hope | Works until it doesn't |
|
|
150
|
-
| Manual TDD | Write tests yourself | Slow, easy to skip |
|
|
151
|
-
| **TLC** | Tests auto-generated first | Fast, guaranteed coverage |
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
218
|
## Install
|
|
156
219
|
|
|
157
220
|
```bash
|
|
@@ -159,11 +222,17 @@ npx tlc-claude-code
|
|
|
159
222
|
```
|
|
160
223
|
|
|
161
224
|
Options:
|
|
162
|
-
- `--global` — Available
|
|
225
|
+
- `--global` — Available in all projects
|
|
163
226
|
- `--local` — This project only
|
|
164
227
|
|
|
165
228
|
---
|
|
166
229
|
|
|
230
|
+
## See Also
|
|
231
|
+
|
|
232
|
+
**Using GSD?** Check out [TDD Workflow](https://github.com/jurgencalleja/tdd) — same philosophy, integrates with GSD.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
167
236
|
## License
|
|
168
237
|
|
|
169
238
|
MIT
|
package/bin/install.js
CHANGED
|
@@ -25,12 +25,13 @@ ${c.cyan} ████████╗██╗ ██████╗
|
|
|
25
25
|
╚═╝ ╚══════╝ ╚═════╝${c.reset}
|
|
26
26
|
`;
|
|
27
27
|
|
|
28
|
-
const VERSION = '0.6.
|
|
28
|
+
const VERSION = '0.6.1';
|
|
29
29
|
|
|
30
30
|
const COMMANDS = [
|
|
31
31
|
'tlc.md',
|
|
32
32
|
'new-project.md',
|
|
33
33
|
'init.md',
|
|
34
|
+
'import-project.md',
|
|
34
35
|
'coverage.md',
|
|
35
36
|
'discuss.md',
|
|
36
37
|
'plan.md',
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tdd-dashboard",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TUI dashboard for TDD workflow",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"tdd-dashboard": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": "tsx src/index.tsx",
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"test": "vitest run",
|
|
14
|
+
"test:watch": "vitest"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"chalk": "^5.3.0",
|
|
18
|
+
"dockerode": "^4.0.2",
|
|
19
|
+
"ink": "^5.0.1",
|
|
20
|
+
"ink-spinner": "^5.0.0",
|
|
21
|
+
"ink-text-input": "^6.0.0",
|
|
22
|
+
"react": "^18.3.1"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/dockerode": "^3.3.31",
|
|
26
|
+
"@types/node": "^22.10.0",
|
|
27
|
+
"@types/react": "^18.3.12",
|
|
28
|
+
"ink-testing-library": "^4.0.0",
|
|
29
|
+
"memfs": "^4.56.10",
|
|
30
|
+
"tsx": "^4.19.2",
|
|
31
|
+
"typescript": "^5.7.2",
|
|
32
|
+
"vitest": "^4.0.18"
|
|
33
|
+
}
|
|
34
|
+
}
|
package/help.md
CHANGED
|
@@ -1,115 +1,99 @@
|
|
|
1
|
-
# /tlc:help - Test-Led Development Commands
|
|
2
|
-
|
|
3
|
-
## Quick Start
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
/tlc
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## All Commands
|
|
14
|
-
|
|
15
|
-
### The Smart One
|
|
16
|
-
|
|
17
|
-
| Command | What It Does |
|
|
18
|
-
|---------|--------------|
|
|
19
|
-
| `/tlc` | **Context-aware
|
|
20
|
-
|
|
21
|
-
### Setup
|
|
22
|
-
|
|
23
|
-
| Command | What It Does |
|
|
24
|
-
|---------|--------------|
|
|
25
|
-
| `/tlc:new-project` | Start new project (discusses stack, creates roadmap) |
|
|
26
|
-
| `/tlc:init` | Add TLC to existing code |
|
|
27
|
-
| `/tlc:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
| `/tlc:
|
|
35
|
-
| `/tlc:
|
|
36
|
-
| `/tlc:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
| `/tlc:
|
|
44
|
-
| `/tlc:
|
|
45
|
-
| `/tlc:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
**Tests define behavior. Code makes tests pass.**
|
|
101
|
-
|
|
102
|
-
- Tests written BEFORE code
|
|
103
|
-
- Tests are the spec, not afterthought
|
|
104
|
-
- Human verification still happens
|
|
105
|
-
- No phase numbers to remember
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Installation
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
npx tlc-claude-code
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Lives in `.claude/commands/tlc/`
|
|
1
|
+
# /tlc:help - Test-Led Development Commands
|
|
2
|
+
|
|
3
|
+
## Quick Start
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
/tlc
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Launches the visual dashboard. Detects where you are, shows what's next.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## All Commands
|
|
14
|
+
|
|
15
|
+
### The Smart One
|
|
16
|
+
|
|
17
|
+
| Command | What It Does |
|
|
18
|
+
|---------|--------------|
|
|
19
|
+
| `/tlc` | **Visual dashboard. Context-aware. Knows what to do next.** |
|
|
20
|
+
|
|
21
|
+
### Setup
|
|
22
|
+
|
|
23
|
+
| Command | What It Does |
|
|
24
|
+
|---------|--------------|
|
|
25
|
+
| `/tlc:new-project` | Start new project (discusses stack, creates roadmap) |
|
|
26
|
+
| `/tlc:init` | Add TLC to existing code |
|
|
27
|
+
| `/tlc:import-project` | Import multi-repo microservices architecture |
|
|
28
|
+
| `/tlc:coverage` | Find untested code, write tests |
|
|
29
|
+
|
|
30
|
+
### Build (rarely needed directly)
|
|
31
|
+
|
|
32
|
+
| Command | What It Does |
|
|
33
|
+
|---------|--------------|
|
|
34
|
+
| `/tlc:discuss` | Shape implementation approach |
|
|
35
|
+
| `/tlc:plan` | Create task plan |
|
|
36
|
+
| `/tlc:build` | Write tests → implement → verify |
|
|
37
|
+
| `/tlc:verify` | Human acceptance testing |
|
|
38
|
+
|
|
39
|
+
### Utility
|
|
40
|
+
|
|
41
|
+
| Command | What It Does |
|
|
42
|
+
|---------|--------------|
|
|
43
|
+
| `/tlc:status` | Test pass/fail counts |
|
|
44
|
+
| `/tlc:quick` | One-off task with tests |
|
|
45
|
+
| `/tlc:complete` | Tag release |
|
|
46
|
+
| `/tlc:new-milestone` | Start next version |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Workflow
|
|
51
|
+
|
|
52
|
+
**Simple version:**
|
|
53
|
+
```
|
|
54
|
+
/tlc <- just keep running this
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Detailed version:**
|
|
58
|
+
```
|
|
59
|
+
/tlc:new-project New project
|
|
60
|
+
↓
|
|
61
|
+
/tlc Guides you through each phase:
|
|
62
|
+
→ discuss → plan → build → verify
|
|
63
|
+
↓
|
|
64
|
+
/tlc:complete Tag release
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## What `/tlc` Does
|
|
70
|
+
|
|
71
|
+
Launches a visual terminal dashboard showing:
|
|
72
|
+
- Project overview and current phase
|
|
73
|
+
- Test status (pass/fail counts)
|
|
74
|
+
- Available actions
|
|
75
|
+
|
|
76
|
+
Navigate with keyboard, select actions directly from the UI.
|
|
77
|
+
|
|
78
|
+
Falls back to text mode if dashboard unavailable.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Philosophy
|
|
83
|
+
|
|
84
|
+
**Tests define behavior. Code makes tests pass.**
|
|
85
|
+
|
|
86
|
+
- Tests written BEFORE code
|
|
87
|
+
- Tests are the spec, not afterthought
|
|
88
|
+
- Human verification still happens
|
|
89
|
+
- No phase numbers to remember
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Installation
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx tlc-claude-code
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Lives in `.claude/commands/tlc/`
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# /tlc:import-project - Import Multi-Repo Architecture
|
|
2
|
+
|
|
3
|
+
Scan multiple GitHub repositories, analyze test coverage, create unified project view.
|
|
4
|
+
|
|
5
|
+
## What This Does
|
|
6
|
+
|
|
7
|
+
1. Clones private repos to temp directory (shallow clone)
|
|
8
|
+
2. Detects stack & test framework per repo
|
|
9
|
+
3. Runs coverage analysis per repo
|
|
10
|
+
4. Generates unified coverage report
|
|
11
|
+
5. Creates multi-service PROJECT.md
|
|
12
|
+
6. Identifies critical untested paths across all services
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- Inheriting a multi-repo microservices codebase
|
|
17
|
+
- Verifying "coverage is good" claims
|
|
18
|
+
- Managing multiple services as one TLC project
|
|
19
|
+
- Onboarding to unfamiliar architecture
|
|
20
|
+
|
|
21
|
+
## Prerequisites
|
|
22
|
+
|
|
23
|
+
- GitHub CLI authenticated: `gh auth status`
|
|
24
|
+
- Access to all repos: `gh repo list {org} --limit 100`
|
|
25
|
+
|
|
26
|
+
## Process
|
|
27
|
+
|
|
28
|
+
### Step 1: Gather Repos
|
|
29
|
+
|
|
30
|
+
Ask user for repos. Accept:
|
|
31
|
+
- GitHub org name (scan all repos)
|
|
32
|
+
- Comma-separated repo URLs
|
|
33
|
+
- Path to file with repo list
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
gh repo list {org} --json name,url --limit 100
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 2: Clone Each Repo (Shallow)
|
|
40
|
+
|
|
41
|
+
For each repo:
|
|
42
|
+
```bash
|
|
43
|
+
gh repo clone {owner}/{repo} .tlc-scan/{repo} -- --depth=1
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Step 3: Detect Stack Per Repo
|
|
47
|
+
|
|
48
|
+
Check for indicators:
|
|
49
|
+
| File | Stack |
|
|
50
|
+
|------|-------|
|
|
51
|
+
| package.json | Node.js |
|
|
52
|
+
| pyproject.toml | Python |
|
|
53
|
+
| go.mod | Go |
|
|
54
|
+
| Cargo.toml | Rust |
|
|
55
|
+
|
|
56
|
+
Check for test framework:
|
|
57
|
+
| Indicator | Framework |
|
|
58
|
+
|-----------|-----------|
|
|
59
|
+
| vitest.config.* | Vitest |
|
|
60
|
+
| jest.config.* | Jest |
|
|
61
|
+
| pytest.ini / [tool.pytest] | pytest |
|
|
62
|
+
| *_test.go | go test |
|
|
63
|
+
|
|
64
|
+
### Step 4: Run Coverage Per Repo
|
|
65
|
+
|
|
66
|
+
Execute framework-specific coverage:
|
|
67
|
+
- **Node.js (vitest):** `npm test -- --coverage --reporter=json`
|
|
68
|
+
- **Node.js (jest):** `npm test -- --coverage --json`
|
|
69
|
+
- **Python:** `pytest --cov --cov-report=json`
|
|
70
|
+
- **Go:** `go test -coverprofile=coverage.out ./...`
|
|
71
|
+
|
|
72
|
+
Parse coverage reports:
|
|
73
|
+
- Node.js: `coverage/coverage-final.json`
|
|
74
|
+
- Python: `coverage.json`
|
|
75
|
+
- Go: parse `coverage.out`
|
|
76
|
+
|
|
77
|
+
### Step 5: Identify Untested Critical Paths
|
|
78
|
+
|
|
79
|
+
Scan for keywords indicating critical code:
|
|
80
|
+
- **Auth:** login, logout, session, token, password, oauth, jwt
|
|
81
|
+
- **Payments:** payment, billing, charge, stripe, invoice
|
|
82
|
+
- **Data mutations:** create, update, delete, save
|
|
83
|
+
- **Security:** validate, sanitize, permission, role
|
|
84
|
+
|
|
85
|
+
Flag any file with these keywords that lacks corresponding test.
|
|
86
|
+
|
|
87
|
+
### Step 6: Generate Unified Report
|
|
88
|
+
|
|
89
|
+
Create `.planning/COVERAGE-REPORT.md`:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Coverage Report - Multi-Service Architecture
|
|
93
|
+
|
|
94
|
+
Generated: {timestamp}
|
|
95
|
+
|
|
96
|
+
## Summary
|
|
97
|
+
|
|
98
|
+
| Metric | Value |
|
|
99
|
+
|--------|-------|
|
|
100
|
+
| Total Repos | 12 |
|
|
101
|
+
| Avg Coverage | 67% |
|
|
102
|
+
| Critical Gaps | 4 |
|
|
103
|
+
|
|
104
|
+
## Per-Service Coverage
|
|
105
|
+
|
|
106
|
+
| Service | Stack | Coverage | Tests | Critical Gaps |
|
|
107
|
+
|---------|-------|----------|-------|---------------|
|
|
108
|
+
| auth-service | Node.js | 87% | 45 | 0 |
|
|
109
|
+
| payment-service | Node.js | 23% | 8 | 2 (charge, refund) |
|
|
110
|
+
| user-service | Python | 91% | 112 | 0 |
|
|
111
|
+
| notification-svc | Node.js | 0% | 0 | 1 (send) |
|
|
112
|
+
|
|
113
|
+
## Critical Gaps (Priority Order)
|
|
114
|
+
|
|
115
|
+
### 1. payment-service/src/charge.ts
|
|
116
|
+
- Handles: Credit card charging
|
|
117
|
+
- Risk: Money handling with no tests
|
|
118
|
+
- Action: Write tests for charge flow
|
|
119
|
+
|
|
120
|
+
### 2. payment-service/src/refund.ts
|
|
121
|
+
- Handles: Refund processing
|
|
122
|
+
- Risk: Money handling with no tests
|
|
123
|
+
- Action: Write tests for refund flow
|
|
124
|
+
|
|
125
|
+
...
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Step 7: Create Multi-Service PROJECT.md
|
|
129
|
+
|
|
130
|
+
Create `.planning/PROJECT.md`:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
# {Project Name} - Multi-Service Architecture
|
|
134
|
+
|
|
135
|
+
## Overview
|
|
136
|
+
|
|
137
|
+
{Inferred from repo names and README files}
|
|
138
|
+
|
|
139
|
+
## Services
|
|
140
|
+
|
|
141
|
+
### auth-service
|
|
142
|
+
- **Path:** github.com/{org}/auth-service
|
|
143
|
+
- **Stack:** Node.js + Express
|
|
144
|
+
- **Test Framework:** Vitest
|
|
145
|
+
- **Coverage:** 87%
|
|
146
|
+
- **Role:** Authentication & session management
|
|
147
|
+
|
|
148
|
+
### payment-service
|
|
149
|
+
- **Path:** github.com/{org}/payment-service
|
|
150
|
+
- **Stack:** Node.js + Stripe
|
|
151
|
+
- **Test Framework:** Jest
|
|
152
|
+
- **Coverage:** 23%
|
|
153
|
+
- **Role:** Payment processing
|
|
154
|
+
|
|
155
|
+
...
|
|
156
|
+
|
|
157
|
+
## Architecture
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
[API Gateway]
|
|
161
|
+
|-- [Auth Service] --> [User DB]
|
|
162
|
+
|-- [User Service] --> [User DB]
|
|
163
|
+
|-- [Payment Service] --> [Stripe API]
|
|
164
|
+
+-- [Notification Service] --> [Email/SMS]
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Development Methodology: Test-Led Development
|
|
168
|
+
|
|
169
|
+
All services follow TLC. New code requires tests first.
|
|
170
|
+
|
|
171
|
+
## Next Steps
|
|
172
|
+
|
|
173
|
+
1. Fix critical coverage gaps (see COVERAGE-REPORT.md)
|
|
174
|
+
2. Run `/tlc:coverage` per service for detailed backlog
|
|
175
|
+
3. Use `/tlc` for new features
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Step 8: Create Test Backlog
|
|
179
|
+
|
|
180
|
+
Create `.planning/BACKLOG.md`:
|
|
181
|
+
|
|
182
|
+
```markdown
|
|
183
|
+
# Test Backlog - Multi-Service
|
|
184
|
+
|
|
185
|
+
## Critical (Security/Money)
|
|
186
|
+
|
|
187
|
+
- [ ] payment-service: src/charge.ts
|
|
188
|
+
- [ ] payment-service: src/refund.ts
|
|
189
|
+
- [ ] auth-service: src/password-reset.ts (if untested)
|
|
190
|
+
|
|
191
|
+
## High Priority (Core Business Logic)
|
|
192
|
+
|
|
193
|
+
- [ ] user-service: src/registration.ts
|
|
194
|
+
- [ ] order-service: src/checkout.ts
|
|
195
|
+
|
|
196
|
+
## Standard
|
|
197
|
+
|
|
198
|
+
- [ ] notification-svc: all files (0% coverage)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Step 9: Cleanup
|
|
202
|
+
|
|
203
|
+
Remove temp directory:
|
|
204
|
+
```bash
|
|
205
|
+
rm -rf .tlc-scan/
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Step 10: Report Summary
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
Import complete for {org}
|
|
212
|
+
|
|
213
|
+
Repos scanned: 12
|
|
214
|
+
Total coverage: 67% average
|
|
215
|
+
|
|
216
|
+
Critical findings:
|
|
217
|
+
- payment-service: 23% coverage (handles money!)
|
|
218
|
+
- notification-svc: 0% coverage
|
|
219
|
+
|
|
220
|
+
Files created:
|
|
221
|
+
.planning/PROJECT.md
|
|
222
|
+
.planning/COVERAGE-REPORT.md
|
|
223
|
+
.planning/BACKLOG.md
|
|
224
|
+
|
|
225
|
+
Next: Run /tlc:build backlog to write tests for critical gaps
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Usage
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
# Scan entire GitHub org
|
|
232
|
+
/tlc:import-project myorg
|
|
233
|
+
|
|
234
|
+
# Scan specific repos
|
|
235
|
+
/tlc:import-project myorg/auth-service,myorg/payment-service
|
|
236
|
+
|
|
237
|
+
# Scan from file
|
|
238
|
+
/tlc:import-project --file repos.txt
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Notes
|
|
242
|
+
|
|
243
|
+
- Requires `gh` CLI authenticated with access to private repos
|
|
244
|
+
- Shallow clones only (--depth=1) to minimize bandwidth
|
|
245
|
+
- Temp files cleaned up after scan
|
|
246
|
+
- Re-run anytime to update coverage report
|
package/package.json
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tlc-claude-code",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "TLC - Test Led Coding for Claude Code",
|
|
5
5
|
"bin": {
|
|
6
|
-
"tlc-claude-code": "./bin/install.js"
|
|
6
|
+
"tlc-claude-code": "./bin/install.js",
|
|
7
|
+
"tlc-dashboard": "./dashboard/dist/index.js"
|
|
7
8
|
},
|
|
8
9
|
"files": [
|
|
9
10
|
"bin/",
|
|
11
|
+
"dashboard/dist/",
|
|
12
|
+
"dashboard/package.json",
|
|
10
13
|
"*.md",
|
|
11
14
|
"install.sh"
|
|
12
15
|
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "cd dashboard && npm run build",
|
|
18
|
+
"prepublishOnly": "npm run build"
|
|
19
|
+
},
|
|
13
20
|
"repository": {
|
|
14
21
|
"type": "git",
|
|
15
22
|
"url": "git+https://github.com/jurgencalleja/TLC.git"
|
package/tlc.md
CHANGED
|
@@ -1,217 +1,197 @@
|
|
|
1
|
-
# /tlc - Smart Entry Point
|
|
2
|
-
|
|
3
|
-
One command. Context-aware.
|
|
4
|
-
|
|
5
|
-
## What This Does
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Process
|
|
10
|
-
|
|
11
|
-
### Step 1:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
**
|
|
89
|
-
```
|
|
90
|
-
Phase 2: User Dashboard
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
2) Add tests to existing code first
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
## Usage
|
|
202
|
-
|
|
203
|
-
```
|
|
204
|
-
/tlc
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
No arguments. Auto-detects everything.
|
|
208
|
-
|
|
209
|
-
## Why This Exists
|
|
210
|
-
|
|
211
|
-
Instead of remembering:
|
|
212
|
-
- `/tlc:discuss 2`
|
|
213
|
-
- `/tlc:plan 2`
|
|
214
|
-
- `/tlc:build 2`
|
|
215
|
-
- `/tlc:verify 2`
|
|
216
|
-
|
|
217
|
-
Just run `/tlc`. It knows where you are.
|
|
1
|
+
# /tlc - Smart Entry Point
|
|
2
|
+
|
|
3
|
+
One command. Context-aware. Visual dashboard.
|
|
4
|
+
|
|
5
|
+
## What This Does
|
|
6
|
+
|
|
7
|
+
Launches the TLC dashboard - a visual interface showing project state, phases, tests, and next actions.
|
|
8
|
+
|
|
9
|
+
## Process
|
|
10
|
+
|
|
11
|
+
### Step 1: Launch Dashboard
|
|
12
|
+
|
|
13
|
+
Run the TLC dashboard:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# If in TLC repo (development)
|
|
17
|
+
cd dashboard && npm run dev
|
|
18
|
+
|
|
19
|
+
# If installed globally
|
|
20
|
+
tlc-dashboard
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The dashboard shows:
|
|
24
|
+
- Project overview (from PROJECT.md)
|
|
25
|
+
- Phase progress (from ROADMAP.md)
|
|
26
|
+
- Test status (pass/fail counts)
|
|
27
|
+
- Available actions
|
|
28
|
+
|
|
29
|
+
### Step 2: Fallback to Text Mode
|
|
30
|
+
|
|
31
|
+
If the dashboard cannot be launched (not installed, dependencies missing), fall back to text-based status:
|
|
32
|
+
|
|
33
|
+
Check what exists:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
□ PROJECT.md exists?
|
|
37
|
+
□ .planning/ directory exists?
|
|
38
|
+
□ .planning/ROADMAP.md exists?
|
|
39
|
+
□ Test framework configured? (vitest.config.*, pytest.ini, etc.)
|
|
40
|
+
□ Test files exist?
|
|
41
|
+
□ Source files exist?
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Step 3: Route Based on State (Text Fallback)
|
|
45
|
+
|
|
46
|
+
**No PROJECT.md → New or Init**
|
|
47
|
+
```
|
|
48
|
+
No project detected.
|
|
49
|
+
|
|
50
|
+
1) Start new project (/tlc:new-project)
|
|
51
|
+
2) Add TLC to existing code (/tlc:init)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**PROJECT.md exists, no roadmap → Need Planning**
|
|
55
|
+
```
|
|
56
|
+
Project exists but no roadmap.
|
|
57
|
+
|
|
58
|
+
Let's break your project into phases.
|
|
59
|
+
|
|
60
|
+
What's the first feature to build?
|
|
61
|
+
```
|
|
62
|
+
Then create ROADMAP.md with phases based on discussion.
|
|
63
|
+
|
|
64
|
+
**Roadmap exists → Check Phase Status**
|
|
65
|
+
|
|
66
|
+
Parse ROADMAP.md to find:
|
|
67
|
+
- Completed phases: `[x]` or `[completed]`
|
|
68
|
+
- Current phase: `[>]` or `[in progress]` or `[current]`
|
|
69
|
+
- Next pending phase: first without marker
|
|
70
|
+
|
|
71
|
+
### Step 4: Determine Current Phase Action
|
|
72
|
+
|
|
73
|
+
For the current/next phase, check what exists:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Phase {N}: {Name}
|
|
77
|
+
□ DISCUSSION.md exists? (.planning/phases/{N}-DISCUSSION.md)
|
|
78
|
+
□ PLAN.md exists? (.planning/phases/{N}-*-PLAN.md)
|
|
79
|
+
□ Tests written? (.planning/phases/{N}-TESTS.md or test files)
|
|
80
|
+
□ Implementation done? (check if tests pass)
|
|
81
|
+
□ Verified? (.planning/phases/{N}-VERIFIED.md)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 5: Present Contextual Action
|
|
85
|
+
|
|
86
|
+
Based on phase state, show ONE clear action:
|
|
87
|
+
|
|
88
|
+
**Phase not discussed:**
|
|
89
|
+
```
|
|
90
|
+
Phase 2: User Dashboard
|
|
91
|
+
|
|
92
|
+
Ready to discuss implementation approach.
|
|
93
|
+
|
|
94
|
+
→ Continue? (Y/n)
|
|
95
|
+
```
|
|
96
|
+
Then run discuss flow.
|
|
97
|
+
|
|
98
|
+
**Discussed but not planned:**
|
|
99
|
+
```
|
|
100
|
+
Phase 2: User Dashboard
|
|
101
|
+
|
|
102
|
+
Discussion complete. Ready to create task plan.
|
|
103
|
+
|
|
104
|
+
→ Continue? (Y/n)
|
|
105
|
+
```
|
|
106
|
+
Then run plan flow.
|
|
107
|
+
|
|
108
|
+
**Planned but no tests:**
|
|
109
|
+
```
|
|
110
|
+
Phase 2: User Dashboard
|
|
111
|
+
|
|
112
|
+
Plan ready. 4 tasks to implement.
|
|
113
|
+
|
|
114
|
+
Next: Write tests, then build.
|
|
115
|
+
|
|
116
|
+
→ Continue? (Y/n)
|
|
117
|
+
```
|
|
118
|
+
Then run build flow (tests first).
|
|
119
|
+
|
|
120
|
+
**Tests written, not implemented:**
|
|
121
|
+
```
|
|
122
|
+
Phase 2: User Dashboard
|
|
123
|
+
|
|
124
|
+
Tests ready (12 tests, all failing - expected).
|
|
125
|
+
|
|
126
|
+
Next: Implement to make tests pass.
|
|
127
|
+
|
|
128
|
+
→ Continue? (Y/n)
|
|
129
|
+
```
|
|
130
|
+
Then run implementation.
|
|
131
|
+
|
|
132
|
+
**Implemented, not verified:**
|
|
133
|
+
```
|
|
134
|
+
Phase 2: User Dashboard
|
|
135
|
+
|
|
136
|
+
Tests passing (12/12)
|
|
137
|
+
|
|
138
|
+
Next: Human verification.
|
|
139
|
+
|
|
140
|
+
→ Continue? (Y/n)
|
|
141
|
+
```
|
|
142
|
+
Then run verify flow.
|
|
143
|
+
|
|
144
|
+
**Phase complete:**
|
|
145
|
+
```
|
|
146
|
+
Phase 2: User Dashboard - Complete
|
|
147
|
+
|
|
148
|
+
Moving to Phase 3: Reports
|
|
149
|
+
|
|
150
|
+
→ Continue? (Y/n)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Step 6: Check for Untested Code
|
|
154
|
+
|
|
155
|
+
If project has source files without tests:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
Found 5 files without tests:
|
|
159
|
+
- src/utils/helpers.ts
|
|
160
|
+
- src/api/users.ts
|
|
161
|
+
- src/services/email.ts
|
|
162
|
+
...
|
|
163
|
+
|
|
164
|
+
Add tests for existing code? (Y/n)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
If yes, run `/tlc:coverage` flow.
|
|
168
|
+
|
|
169
|
+
### Step 7: All Phases Complete
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
All phases complete!
|
|
173
|
+
|
|
174
|
+
Milestone ready for release.
|
|
175
|
+
|
|
176
|
+
1) Tag release (/tlc:complete)
|
|
177
|
+
2) Start next milestone (/tlc:new-milestone)
|
|
178
|
+
3) Check test coverage (/tlc:coverage)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Usage
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
/tlc
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
No arguments. Auto-detects everything. Launches dashboard when available.
|
|
188
|
+
|
|
189
|
+
## Why This Exists
|
|
190
|
+
|
|
191
|
+
Instead of remembering:
|
|
192
|
+
- `/tlc:discuss 2`
|
|
193
|
+
- `/tlc:plan 2`
|
|
194
|
+
- `/tlc:build 2`
|
|
195
|
+
- `/tlc:verify 2`
|
|
196
|
+
|
|
197
|
+
Just run `/tlc`. It knows where you are.
|