main.gois the entrypoint; CLI commands live incmd/(Cobra-based).- Core implementation is under
internal/(for exampleinternal/app,internal/mcp,internal/memory,internal/planner). - Unit tests are colocated with code as
*_test.go; integration tests are intests/integration/. - Documentation is in
docs/; automation scripts are inscripts/; CI pipelines are in.github/workflows/. - Generated/local artifacts such as
.taskwing/,test-results/, and thetaskwingbinary are gitignored.
make dev-setup: prepares local tooling, runsgo mod tidy, and generates code.make build: builds the local CLI binary (./taskwing).make test: runs unit, integration, and MCP test targets.make test-quick: fast local checks during iteration.make lint: runs formatting and static analysis (go fmt,go vet,staticcheck, optionalgolangci-lint).go test ./...: baseline CI-style test run.
- Target Go
1.24.x(seego.modand CI workflow). - Follow standard Go style: gofmt-managed formatting (tabs), idiomatic naming, lowercase package names.
- Keep CLI wiring in
cmd/and business logic ininternal/.... - Use descriptive lowercase file names; tests must use
_test.go. - Do not commit local secrets or machine-specific files (
.env, local binaries, temp outputs).
- Prefer table-driven tests for logic-heavy code and use
t.Run(...)for subcases. - Name tests with
TestXxxand keep assertions focused on observable behavior. - Run
make test-quickbefore small commits; runmake testbefore opening a PR. - Add/update integration tests in
tests/integration/for end-to-end CLI/MCP behavior. - Use
make coverageto inspect coverage and avoid reducing coverage in touched packages.
- Use Conventional Commit style:
feat(scope): ...,fix: ...,test: ...,chore: .... - Keep commit subjects concise, imperative, and focused on what changed.
- PRs should include: purpose, linked issue (if applicable), test evidence, and docs updates for user-facing changes.
- Ensure CI passes (
lint,test, docs consistency) before requesting review.
This project uses TaskWing for architectural knowledge management. You have access to TaskWing MCP tools.
- No implementation before a clarified and approved plan/task checkpoint.
- No completion claim without fresh verification evidence.
- No debug fix proposal without root-cause evidence.
ask-- Search project knowledge before modifying unfamiliar code.remember-- Persist a decision or pattern for future sessions.code-- Find symbols, explain call graphs, analyze impact, simplify code.debug-- Diagnose issues with root-cause analysis.taskwith action=current -- Check current task status.
When to use TaskWing MCP tools:
- Before modifying unfamiliar code: call
askto check for relevant decisions, constraints, and patterns - Before planning multi-step work: call
planwith action=clarify to get a structured plan - When asked about architecture, tech stack, or "why" questions: call
askwith answer=true - After making an architectural decision: call
rememberto persist it for future sessions - To understand a symbol's role and callers: call
codewith action=explain
Do not grep or read files to answer architecture questions when TaskWing MCP is available. The knowledge graph has pre-extracted, verified decisions with evidence.
- /taskwing:plan - Use when you need to clarify a goal and build an approved execution plan.
- /taskwing:next - Use when you are ready to start the next approved TaskWing task with full context.
- /taskwing:done - Use when implementation is verified and you are ready to complete the current task.
- /taskwing:context - Use when you need the full project knowledge dump for complete architectural context.
- taskwing bootstrap
- taskwing ask ""
- taskwing task
- taskwing mcp
- taskwing doctor
- taskwing config
- taskwing start
| Tool | Description |
|---|---|
| ask | Search project knowledge (decisions, patterns, constraints) |
| task | Unified task lifecycle (next, current, start, complete) |
| plan | Plan management (clarify, decompose, expand, generate, finalize, audit) |
| code | Code intelligence (find, search, explain, callers, impact, simplify) |
| debug | Diagnose issues systematically with AI-powered analysis |
| remember | Store knowledge in project memory |
TaskWing integrates with Claude Code's hook system for autonomous plan execution:
taskwing hook session-init # Initialize session tracking (SessionStart hook)
taskwing hook continue-check # Check if should continue to next task (Stop hook)
taskwing hook session-end # Cleanup session (SessionEnd hook)
taskwing hook status # View current session stateCircuit breakers prevent runaway execution:
- --max-tasks=5 stops after N tasks for human review.
- --max-minutes=30 stops after N minutes.
Configuration in .claude/settings.json enables auto-continuation through plans. Hook commands prefer $CLAUDE_PROJECT_DIR/bin/taskwing and fall back to taskwing in PATH. If Claude Code is already running, use /hooks to review or reload hook changes.