Claude Project Tracker

refreshed 2026-10-08 23:33:27Z
Projects / claude-project-tracker

claude-project-tracker blocked

claude-project-tracker · last seen 2026-09-27 00:58
Bug found: the global activity log (tracker_get_log without project_id) returns nothing newer than #20 (2026-07-23), though #21–#27 are stored and show correctly per project. The dashboard feed looks stale as a result. Also, vajra-mobile-app #22–#24 contain stray '</note></invoke>' text. NEXT: connect the tracker server repo, fix the cross-project log query, sanitize notes on write.

blocker  1 open

Fix global activity log: unfiltered tracker_get_log stops at update #20 (Jul 23)
high
Found 2026-09-26. tracker_get_log with no project_id returns newest = #20 (adaptive-sat, 2026-07-23). Updates #21–#27 exist and show correctly per project (vajra-mobile-app #21–#25, agent-production-support #26–#27), and list_projects shows current status fine. So writes work; the cross-project log query is wrong (likely ordering, a stale cache/view, or a filter excluding newer projects/sources). The dashboard's recent-activity feed probably uses it, so it looks like no updates since July. Also: vajra-mobile-app notes #22–#24 contain stray '</note></invoke>' fragments; sanitize on write and clean those rows.
tracker_get_log (no project_id)updates #20-#27vajra-mobile-app #22-#24
added 09-27 00:58 · by saravanan@scrumclaw.ai · claude-cowork
from the conversationsaravanan: why my tracker updates are not happening? claude: Writes are saved (#26, #27), but the all-projects log stops at #20 (Jul 23); per-project logs are complete. Likely a server query bug. saravanan: can you push this to tracker

todo  5 open

Verify v3.1 conversation_excerpt rendering
high OVERDUE 115d
MORNING.md
added 06-10 08:07 · by saravanan@scrumclaw.ai
from the conversationsaravanan: I want to see the excerpt actually show up in the dashboard. claude: Captured a high-priority todo to test it.
Add POST /webhook/github endpoint to the Go server
high
Accepts GitHub webhook events (configure on the repo with a shared secret). When a pull_request event with action=closed and merged=true comes in, parse the PR body for `Closes #&lt;item_id&gt;` or `Fixes #&lt;item_id&gt;` patterns and call the existing complete_item path for each. Add: HMAC-SHA256 signature verification using `GITHUB_WEBHOOK_SECRET` env var. Route lives in main.go alongside the other public POST endpoints. Probably one new file github_webhook.go.
api-go/main.goapi-go/handlers_api.go
added 06-11 11:26 · by saravanan@scrumclaw.ai · claude-cowork
from the conversationclaude: Webhook handler (medium): Add /webhook/github to the tracker server; parse merged-PR bodies for Closes #&lt;item_id&gt; and call complete_item. Single HTTP handler + webhook secret. saravanan: [agreed, this is the keystone feature]
Plugin hook: comment on linked PR when a todo is completed
In tracker_complete_item, if the item's refs[] contains a GitHub PR URL and a GITHUB_TOKEN is configured, POST a comment to the PR like "✅ tracker item #&lt;id&gt; ('&lt;title&gt;') marked done by &lt;user&gt;". Best-effort — log on failure, don't block the tracker update. Requires the plugin to know the GitHub token (new optional env var or read from gh CLI config).
plugin/mcp/server.py
added 06-11 11:26 · by saravanan@scrumclaw.ai · claude-cowork
from the conversationclaude: [feature in scope] comment on linked PR when a todo completes saravanan: [agreed, part of plugin-side hooks]
Render refs[] as clickable PR/issue badges on the dashboard
Pure frontend change in the Go templates. When a ref looks like a GitHub URL (github.com/.../pull/N or .../issues/N), render it as a styled badge with the PR/issue number. Other refs render as code chips like today. Templates touched: detail.html, pending.html, possibly dashboard.html log lines.
api-go/templates/detail.htmlapi-go/templates/pending.html
added 06-11 11:26 · by saravanan@scrumclaw.ai · claude-cowork
from the conversationclaude: Tracker plugin tweak (small): Make the existing refs field render GitHub URLs as PR/issue badges on the dashboard. Pure frontend. saravanan: [agreed, included in plan]
Background poll: mirror GitHub issues as tracker items
low
Deferred until items #4 and #5 (the close-on-merge webhook and the PR badges) prove valuable. When ready: a background goroutine in the Go server polls `GET /repos/:owner/:repo/issues` every N minutes and upserts each issue as a tracker item (linking via parent_item_id or a new `external_id` column). Two-way write-back on completion. Per-project repo config in claude_projects (probably a new repo_url is already there).
api-go/main.go
added 06-11 11:26 · by saravanan@scrumclaw.ai · claude-cowork
from the conversationclaude: Issue mirror (larger): Background job that polls GET /repos/:owner/:repo/issues and upserts. Defer until 1–3 prove valuable. saravanan: [agreed, defer]

decision  1 open

Extend the tracker plugin itself for GitHub integration (not a separate MCP)
Three approaches were considered: (a) install the generic github/github-mcp-server, (b) extend this plugin, (c) build a custom MCP between the two. Chose (b) because the plugin already runs git commit/push at session_end — adding "comment on linked PR when a todo completes" and "auto-close items when PR with `Closes #<item_id>` merges" sits naturally there. Phased rollout: install GitHub MCP for ad-hoc access first, then plugin frontend badges, then webhook handler, then optional issue mirror.
added 06-11 11:26 · by saravanan@scrumclaw.ai · claude-cowork
from the conversationsaravanan: can we build [a GitHub integration] so it is useful for project tracker? saravanan: [chose] Extend the tracker plugin itself to call GitHub APIs. The plugin already runs on commit/push during tracker_session_end. Adding hooks like "stamp the commit SHA on the latest update" (already exists), "comment on linked PR when a todo completes", "auto-close items when a PR with Closes #<item_id> merges" lives more naturally there than in a separate MCP.

note  1 open

5 items captured in other session landed under project_id 'outputs' — orphans to clean up
low
The claude-collab session captured 1 decision + 4 todos on the GitHub integration, but they were stamped with project_id='outputs' because the plugin's cwd in that session was Cowork's outputs folder, not the project folder. The v3.4 ephemeral-folder guard prevents this for tracker_init_project but doesn't retroactively fix existing rows. Cleanup options: (a) DELETE FROM claude_projects WHERE project_id='outputs' CASCADE in Studio, accepting the loss of those originals (they're now duplicated under claude-project-tracker by this digest), or (b) UPDATE the 5 rows to set project_id='claude-project-tracker'.
added 06-11 11:26 · by saravanan@scrumclaw.ai · claude-cowork

Add item

Recently completed

Add per-project CLAUDE.md with Project ID for each tracked project
todo  done 06-09 19:49 · by Saravanan

Log

blockedBug found: the global activity log (tracker_get_log without project_id) returns nothing newer than #20 (2026-07-23), though #21–#27 are stored and show correctly per project. The dashboard feed looks stale as a result. Also, vajra-mobile-app #22–#24 contain stray '</note></invoke>' text. NEXT: connect the tracker server repo, fix the cross-project log query, sanitize notes on write. · saravanan@scrumclaw.ai
activeBackfilling repo_url so /join works from a fresh clone. v3.6 plugin shipped (tracker_join_project + /join command). · saravanan@scrumclaw.ai