Why I Built TaskWing
The problem
I've been thinking about AI-assisted coding for a while. Back in 2020, I fine-tuned GPT-2 for code generation - 8 months before GitHub Copilot even launched. GPT-2 was too small to be useful, but the idea was right. Copilot, Codeium, and others proved the market a year later.
Now I use AI coding assistants every day. Claude, Cursor - they're good at writing code. But they all share the same problem: they forget everything the moment you start a new session.
You paste the same context. You re-explain the same architecture. You correct the same assumptions. Every single time.
When I ask an AI to "add authentication to this API," it doesn't know my project uses Go, not TypeScript. It doesn't know I have a specific middleware pattern. It doesn't know about the shared auth package that already exists. So it generates something generic and I spend 20 minutes fixing it.
I got tired of this.
What TaskWing does
TaskWing is a CLI tool that gives AI assistants persistent memory about your codebase. You run taskwing bootstrap and it analyzes your project - architecture, patterns, decisions, constraints. Stores everything in a local SQLite database and exposes it to AI assistants via MCP (Model Context Protocol).
The workflow is simple:
# 1) Bootstrap project memory
cd your-project
taskwing bootstrap
# 2) Create a plan from a goal
taskwing goal "Add Stripe billing"
# 3) Execute from your AI assistant
/tw-next
# ...work...
/tw-done
When you bootstrap a project, TaskWing extracts things like architectural constraints, design patterns, feature boundaries, and key decisions. On a typical project it finds 70+ knowledge items across these categories.
This context lives in .taskwing/ directory in your repo. AI assistants pick it up automatically through MCP. Next session, the AI already knows your project.
How it works
Built in Go. Distributed via Homebrew (brew install josephgoksu/tap/taskwing). Currently at v1.18.1.
The core is a knowledge graph that stores what it learns about your codebase. When an AI assistant asks a question through MCP, TaskWing does hybrid retrieval - vector search plus graph traversal - to find relevant context.
It supports Claude Code, Cursor, Gemini CLI, and OpenCode. The MCP server exposes tools for:
- recall - retrieve project knowledge
- task - manage task lifecycle (next, current, complete)
- plan - create and decompose plans from goals
- code - find symbols, search, explain, check impact
- remember - store new knowledge
You can also use slash commands directly in your AI assistant: /tw-next, /tw-done, /tw-status, /tw-plan.
Why I built it in Go
I wrote about switching from Node.js to Go before. For TaskWing it made even more sense - single binary, no runtime dependencies, fast startup. You don't want your CLI tool to need a node_modules folder.
The whole thing compiles to one binary that works on macOS and Linux. GoReleaser handles cross-platform builds and publishes to Homebrew automatically.
What's next
I'm working on making the knowledge extraction smarter. Right now bootstrap does a solid job but there's room for better pattern recognition. Also exploring fine-tuning a model specifically for codebase understanding - I recently fine-tuned one for compliance narratives and the approach could work here too.
Try it
- GitHub: josephgoksu/TaskWing
- Website: taskwing.app
- Install:
brew install josephgoksu/tap/taskwing
If you're using AI coding tools daily, give it a try. I'm building this in the open.