Skip to content

Commit 7598831

Browse files
committed
feat: add CLI demo GIFs and update README
- Add VHS demo recordings for ask, knowledge, and bootstrap commands - Include GIF and MP4 outputs for each demo - Add ask.gif showcase to README - Fix alternating row style for better terminal theme compatibility
1 parent c4f7c19 commit 7598831

28 files changed

Lines changed: 369 additions & 101 deletions

AGENTS.md

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# Repository Guidelines
22

33
## Project Structure & Module Organization
4+
45
- `main.go` is the entrypoint; CLI commands live in `cmd/` (Cobra-based).
56
- Core implementation is under `internal/` (for example `internal/app`, `internal/mcp`, `internal/memory`, `internal/planner`).
67
- Unit tests are colocated with code as `*_test.go`; integration tests are in `tests/integration/`.
78
- Documentation is in `docs/`; automation scripts are in `scripts/`; CI pipelines are in `.github/workflows/`.
89
- Generated/local artifacts such as `.taskwing/`, `test-results/`, and the `taskwing` binary are gitignored.
910

1011
## Build, Test, and Development Commands
12+
1113
- `make dev-setup`: prepares local tooling, runs `go mod tidy`, and generates code.
1214
- `make build`: builds the local CLI binary (`./taskwing`).
1315
- `make test`: runs unit, integration, and MCP test targets.
@@ -17,20 +19,23 @@
1719
- `./scripts/check-doc-consistency.sh`: validates Markdown/doc sync rules used by CI.
1820

1921
## Coding Style & Naming Conventions
22+
2023
- Target Go `1.24.x` (see `go.mod` and CI workflow).
2124
- Follow standard Go style: gofmt-managed formatting (tabs), idiomatic naming, lowercase package names.
2225
- Keep CLI wiring in `cmd/` and business logic in `internal/...`.
2326
- Use descriptive lowercase file names; tests must use `_test.go`.
2427
- Do not commit local secrets or machine-specific files (`.env`, local binaries, temp outputs).
2528

2629
## Testing Guidelines
30+
2731
- Prefer table-driven tests for logic-heavy code and use `t.Run(...)` for subcases.
2832
- Name tests with `TestXxx` and keep assertions focused on observable behavior.
2933
- Run `make test-quick` before small commits; run `make test` before opening a PR.
3034
- Add/update integration tests in `tests/integration/` for end-to-end CLI/MCP behavior.
3135
- Use `make coverage` to inspect coverage and avoid reducing coverage in touched packages.
3236

3337
## Commit & Pull Request Guidelines
38+
3439
- Use Conventional Commit style: `feat(scope): ...`, `fix: ...`, `test: ...`, `chore: ...`.
3540
- Keep commit subjects concise, imperative, and focused on what changed.
3641
- PRs should include: purpose, linked issue (if applicable), test evidence, and docs updates for user-facing changes.
@@ -39,34 +44,41 @@
3944

4045
## TaskWing Integration
4146

42-
TaskWing helps me turn a goal into executed tasks with persistent context across AI sessions.
47+
TaskWing helps turn a goal into executed tasks with persistent context across AI sessions.
4348

4449
### Supported Models
4550

4651
<!-- TASKWING_PROVIDERS_START -->
52+
4753
[![OpenAI](https://img.shields.io/badge/OpenAI-412991?logo=openai&logoColor=white)](https://platform.openai.com/)
4854
[![Anthropic](https://img.shields.io/badge/Anthropic-191919?logo=anthropic&logoColor=white)](https://www.anthropic.com/)
4955
[![Google Gemini](https://img.shields.io/badge/Google_Gemini-4285F4?logo=google&logoColor=white)](https://ai.google.dev/)
5056
[![AWS Bedrock](https://img.shields.io/badge/AWS_Bedrock-OpenAI--Compatible_Beta-FF9900?logo=amazonaws&logoColor=white)](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-chat-completions.html)
5157
[![Ollama](https://img.shields.io/badge/Ollama-Local-000000?logo=ollama&logoColor=white)](https://ollama.com/)
58+
5259
<!-- TASKWING_PROVIDERS_END -->
5360

5461
### Works With
5562

5663
<!-- TASKWING_TOOLS_START -->
64+
5765
[![Claude Code](https://img.shields.io/badge/Claude_Code-191919?logo=anthropic&logoColor=white)](https://www.anthropic.com/claude-code)
5866
[![OpenAI Codex](https://img.shields.io/badge/OpenAI_Codex-412991?logo=openai&logoColor=white)](https://developers.openai.com/codex)
5967
[![Cursor](https://img.shields.io/badge/Cursor-111111?logo=cursor&logoColor=white)](https://cursor.com/)
6068
[![GitHub Copilot](https://img.shields.io/badge/GitHub_Copilot-181717?logo=githubcopilot&logoColor=white)](https://github.com/features/copilot)
6169
[![Gemini CLI](https://img.shields.io/badge/Gemini_CLI-4285F4?logo=google&logoColor=white)](https://github.com/google-gemini/gemini-cli)
6270
[![OpenCode](https://img.shields.io/badge/OpenCode-000000?logo=opencode&logoColor=white)](https://opencode.ai/)
71+
6372
<!-- TASKWING_TOOLS_END -->
6473

6574
<!-- TASKWING_LEGAL_START -->
75+
6676
Brand names and logos are trademarks of their respective owners; usage here indicates compatibility, not endorsement.
77+
6778
<!-- TASKWING_LEGAL_END -->
6879

6980
### Slash Commands
81+
7082
- /tw-ask - Use when you need to search project knowledge (decisions, patterns, constraints).
7183
- /tw-remember - Use when you want to persist a decision, pattern, or insight to project memory.
7284
- /tw-next - Use when you are ready to start the next approved TaskWing task with full context.
@@ -80,6 +92,7 @@ Brand names and logos are trademarks of their respective owners; usage here indi
8092
### Core Commands
8193

8294
<!-- TASKWING_COMMANDS_START -->
95+
8396
- taskwing bootstrap
8497
- taskwing goal "<goal>"
8598
- taskwing ask "<query>"
@@ -95,33 +108,36 @@ Brand names and logos are trademarks of their respective owners; usage here indi
95108
### MCP Tools (Canonical Contract)
96109

97110
<!-- TASKWING_MCP_TOOLS_START -->
98-
| Tool | Description |
99-
|------|-------------|
100-
| ask | Search project knowledge (decisions, patterns, constraints) |
101-
| task | Unified task lifecycle (next, current, start, complete) |
102-
| plan | Plan management (clarify, decompose, expand, generate, finalize, audit) |
103-
| code | Code intelligence (find, search, explain, callers, impact, simplify) |
104-
| debug | Diagnose issues systematically with AI-powered analysis |
105-
| remember | Store knowledge in project memory |
111+
112+
| Tool | Description |
113+
| -------- | ----------------------------------------------------------------------- |
114+
| ask | Search project knowledge (decisions, patterns, constraints) |
115+
| task | Unified task lifecycle (next, current, start, complete) |
116+
| plan | Plan management (clarify, decompose, expand, generate, finalize, audit) |
117+
| code | Code intelligence (find, search, explain, callers, impact, simplify) |
118+
| debug | Diagnose issues systematically with AI-powered analysis |
119+
| remember | Store knowledge in project memory |
120+
106121
<!-- TASKWING_MCP_TOOLS_END -->
107122

108123
### Autonomous Task Execution (Hooks)
109124

110125
TaskWing integrates with Claude Code's hook system for autonomous plan execution:
111126

112-
~~~bash
127+
```bash
113128
taskwing hook session-init # Initialize session tracking (SessionStart hook)
114129
taskwing hook continue-check # Check if should continue to next task (Stop hook)
115130
taskwing hook session-end # Cleanup session (SessionEnd hook)
116131
taskwing hook status # View current session state
117-
~~~
132+
```
118133

119134
Circuit breakers prevent runaway execution:
135+
120136
- --max-tasks=5 stops after N tasks for human review.
121137
- --max-minutes=30 stops after N minutes.
122138

123139
Configuration in .claude/settings.json enables auto-continuation through plans.
124140
Hook commands prefer $CLAUDE_PROJECT_DIR/bin/taskwing and fall back to taskwing in PATH.
125141
If Claude Code is already running, use /hooks to review or reload hook changes.
126142

127-
<!-- TASKWING_DOCS_END -->
143+
<!-- TASKWING_DOCS_END -->

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
### Changed
2020

2121
- Updated product messaging to the focused motto:
22-
- "TaskWing helps me turn a goal into executed tasks with persistent context across AI sessions."
22+
- "TaskWing helps turn a goal into executed tasks with persistent context across AI sessions."
2323
- Updated slash and MCP prompt contracts to unified `task` and `plan` action-based interfaces.
2424
- Purged stale/outdated architecture documentation that no longer matches shipped behavior.
2525
- Reworked `/tw-plan`, `/tw-next`, `/tw-done`, and `/tw-debug` prompts as explicit process contracts with hard gates and refusal fallbacks.

CLAUDE.md

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ Use `./bin/taskwing` during development, `taskwing` for testing production behav
1313

1414
Two MCP servers are available for testing:
1515

16-
| MCP Server | Binary | Use Case |
17-
|------------|--------|----------|
18-
| `taskwing-mcp` | Production (`taskwing`) | Stable features, production testing |
19-
| `taskwing-local-dev-mcp` | Development (`./bin/taskwing`) | Testing new/changed features |
16+
| MCP Server | Binary | Use Case |
17+
| ------------------------ | ------------------------------ | ----------------------------------- |
18+
| `taskwing-mcp` | Production (`taskwing`) | Stable features, production testing |
19+
| `taskwing-local-dev-mcp` | Development (`./bin/taskwing`) | Testing new/changed features |
2020

2121
### Testing New Features
2222

@@ -29,6 +29,7 @@ When developing new MCP tools or modifying existing ones:
2929
### Important: MCP Server Caching
3030

3131
The production MCP server (`taskwing-mcp`) uses the installed Homebrew binary. Changes to code are **NOT reflected** until:
32+
3233
- You rebuild: `make build && brew reinstall taskwing` (if using Homebrew)
3334
- Or test with: `go run . mcp` directly
3435

@@ -123,6 +124,7 @@ internal/
123124
### Database Schema
124125

125126
Three main tables in SQLite:
127+
126128
- `features`: id, name, one_liner, status, tags (JSON), file_path, decision_count
127129
- `decisions`: id, feature_id, title, summary, reasoning, tradeoffs
128130
- `edges`: from_feature, to_feature, edge_type (depends_on, extends, replaces, related)
@@ -132,6 +134,7 @@ Graph traversal uses recursive CTEs for GetDependencies/GetDependents.
132134
### LLM Integration
133135

134136
Uses CloudWeGo Eino for multi-provider support:
137+
135138
- OpenAI: Set `OPENAI_API_KEY` or `TASKWING_LLM_APIKEY`
136139
- Anthropic: Set `ANTHROPIC_API_KEY` and `TASKWING_LLM_PROVIDER=anthropic`
137140
- Gemini: Set `GOOGLE_API_KEY` and `TASKWING_LLM_PROVIDER=gemini`
@@ -154,6 +157,7 @@ Tasks receive architectural context via a **hybrid early+late binding** approach
154157
This ensures tasks always have relevant architecture context while maintaining backward compatibility with older tasks.
155158

156159
**Key files**:
160+
157161
- `internal/app/plan.go` - TaskEnricher executes queries at creation time
158162
- `internal/task/presentation.go` - FormatRichContext() handles display with fallback
159163
- `internal/task/scope_config.go` - Configurable scope keywords for context matching
@@ -172,6 +176,7 @@ taskwing hook status # View current session state
172176
```
173177

174178
**Circuit breakers** prevent runaway execution:
179+
175180
- `--max-tasks=5` - Stop after N tasks for human review
176181
- `--max-minutes=30` - Stop after N minutes
177182

@@ -199,12 +204,15 @@ See `docs/development/AUTONOMOUS_HOOKS.md` for full documentation.
199204
We follow [SemVer](https://semver.org/): `MAJOR.MINOR.PATCH` — but **err on the side of NOT bumping**.
200205

201206
### Golden Rule: Batch Changes
207+
202208
- Do NOT bump version for every small fix
203209
- Accumulate related fixes/improvements, then bump ONCE
204210
- Multiple bug fixes in one session = ONE patch bump, not multiple
205211

206212
### PATCH (x.x.X) - Most changes go here
213+
207214
Increment when:
215+
208216
- Bug fixes
209217
- Internal refactoring (no user-visible change)
210218
- Performance improvements
@@ -217,7 +225,9 @@ Increment when:
217225
Examples: JSON repair logic, retry improvements, file tracking fixes
218226

219227
### MINOR (x.X.0) - User-visible new features only
228+
220229
Increment when:
230+
221231
- New CLI command users can run
222232
- New flag users can pass
223233
- New output format users can see
@@ -228,12 +238,15 @@ Increment when:
228238
Examples: new `taskwing goal` command, new `--format` flag, adding Gemini provider
229239

230240
### MAJOR (X.0.0) - Breaking changes only
241+
231242
Increment when:
243+
232244
- Removing commands, flags, or config options
233245
- Changing command behavior incompatibly
234246
- Changing config/database format without migration
235247

236248
### Decision Checklist
249+
237250
1. Is this visible to users running CLI commands? No → probably no bump needed yet
238251
2. Does it break existing workflows? → MAJOR
239252
3. Does it add new user-facing capability? → MINOR
@@ -250,6 +263,7 @@ Increment when:
250263
When user says "let's release", "create a release", or similar:
251264

252265
1. **Analyze changes** since last tag:
266+
253267
```bash
254268
git log $(git describe --tags --abbrev=0)..HEAD --oneline
255269
```
@@ -267,6 +281,7 @@ When user says "let's release", "create a release", or similar:
267281
4. **Get user approval** before proceeding
268282

269283
5. **Execute release**:
284+
270285
```bash
271286
# Create annotated tag with release notes (no source file changes needed)
272287
git tag -a vX.Y.Z -m "Release notes here..."
@@ -295,34 +310,41 @@ Interactive script that prompts for version, opens editor for notes, creates tag
295310

296311
## TaskWing Integration
297312

298-
TaskWing helps me turn a goal into executed tasks with persistent context across AI sessions.
313+
TaskWing helps turn a goal into executed tasks with persistent context across AI sessions.
299314

300315
### Supported Models
301316

302317
<!-- TASKWING_PROVIDERS_START -->
318+
303319
[![OpenAI](https://img.shields.io/badge/OpenAI-412991?logo=openai&logoColor=white)](https://platform.openai.com/)
304320
[![Anthropic](https://img.shields.io/badge/Anthropic-191919?logo=anthropic&logoColor=white)](https://www.anthropic.com/)
305321
[![Google Gemini](https://img.shields.io/badge/Google_Gemini-4285F4?logo=google&logoColor=white)](https://ai.google.dev/)
306322
[![AWS Bedrock](https://img.shields.io/badge/AWS_Bedrock-OpenAI--Compatible_Beta-FF9900?logo=amazonaws&logoColor=white)](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-chat-completions.html)
307323
[![Ollama](https://img.shields.io/badge/Ollama-Local-000000?logo=ollama&logoColor=white)](https://ollama.com/)
324+
308325
<!-- TASKWING_PROVIDERS_END -->
309326

310327
### Works With
311328

312329
<!-- TASKWING_TOOLS_START -->
330+
313331
[![Claude Code](https://img.shields.io/badge/Claude_Code-191919?logo=anthropic&logoColor=white)](https://www.anthropic.com/claude-code)
314332
[![OpenAI Codex](https://img.shields.io/badge/OpenAI_Codex-412991?logo=openai&logoColor=white)](https://developers.openai.com/codex)
315333
[![Cursor](https://img.shields.io/badge/Cursor-111111?logo=cursor&logoColor=white)](https://cursor.com/)
316334
[![GitHub Copilot](https://img.shields.io/badge/GitHub_Copilot-181717?logo=githubcopilot&logoColor=white)](https://github.com/features/copilot)
317335
[![Gemini CLI](https://img.shields.io/badge/Gemini_CLI-4285F4?logo=google&logoColor=white)](https://github.com/google-gemini/gemini-cli)
318336
[![OpenCode](https://img.shields.io/badge/OpenCode-000000?logo=opencode&logoColor=white)](https://opencode.ai/)
337+
319338
<!-- TASKWING_TOOLS_END -->
320339

321340
<!-- TASKWING_LEGAL_START -->
341+
322342
Brand names and logos are trademarks of their respective owners; usage here indicates compatibility, not endorsement.
343+
323344
<!-- TASKWING_LEGAL_END -->
324345

325346
### Slash Commands
347+
326348
- /tw-ask - Use when you need to search project knowledge (decisions, patterns, constraints).
327349
- /tw-remember - Use when you want to persist a decision, pattern, or insight to project memory.
328350
- /tw-next - Use when you are ready to start the next approved TaskWing task with full context.
@@ -336,6 +358,7 @@ Brand names and logos are trademarks of their respective owners; usage here indi
336358
### Core Commands
337359

338360
<!-- TASKWING_COMMANDS_START -->
361+
339362
- `taskwing bootstrap`
340363
- `taskwing goal "<goal>"`
341364
- `taskwing ask "<query>"`
@@ -351,28 +374,31 @@ Brand names and logos are trademarks of their respective owners; usage here indi
351374
### MCP Tools (Canonical Contract)
352375

353376
<!-- TASKWING_MCP_TOOLS_START -->
354-
| Tool | Description |
355-
|------|-------------|
356-
| `ask` | Search project knowledge (decisions, patterns, constraints) |
357-
| `task` | Unified task lifecycle (`next`, `current`, `start`, `complete`) |
358-
| `plan` | Plan management (`clarify`, `decompose`, `expand`, `generate`, `finalize`, `audit`) |
359-
| `code` | Code intelligence (`find`, `search`, `explain`, `callers`, `impact`, `simplify`) |
360-
| `debug` | Diagnose issues systematically with AI-powered analysis |
361-
| `remember` | Store knowledge in project memory |
377+
378+
| Tool | Description |
379+
| ---------- | ----------------------------------------------------------------------------------- |
380+
| `ask` | Search project knowledge (decisions, patterns, constraints) |
381+
| `task` | Unified task lifecycle (`next`, `current`, `start`, `complete`) |
382+
| `plan` | Plan management (`clarify`, `decompose`, `expand`, `generate`, `finalize`, `audit`) |
383+
| `code` | Code intelligence (`find`, `search`, `explain`, `callers`, `impact`, `simplify`) |
384+
| `debug` | Diagnose issues systematically with AI-powered analysis |
385+
| `remember` | Store knowledge in project memory |
386+
362387
<!-- TASKWING_MCP_TOOLS_END -->
363388

364389
### Autonomous Task Execution (Hooks)
365390

366391
TaskWing integrates with Claude Code's hook system for autonomous plan execution:
367392

368-
~~~bash
393+
```bash
369394
taskwing hook session-init # Initialize session tracking (SessionStart hook)
370395
taskwing hook continue-check # Check if should continue to next task (Stop hook)
371396
taskwing hook session-end # Cleanup session (SessionEnd hook)
372397
taskwing hook status # View current session state
373-
~~~
398+
```
374399

375400
Circuit breakers prevent runaway execution:
401+
376402
- --max-tasks=5 stops after N tasks for human review.
377403
- --max-minutes=30 stops after N minutes.
378404

0 commit comments

Comments
 (0)