Skip to content

Commit 1e0daea

Browse files
committed
chore: complete v1.1 milestone
Archived roadmap and requirements to milestones/v1.1-*. Reorganized ROADMAP.md with collapsed v1.1 section. Full PROJECT.md evolution review. Retrospective updated with v1.1 lessons. REQUIREMENTS.md deleted (fresh for next milestone).
1 parent 5210ae3 commit 1e0daea

8 files changed

Lines changed: 215 additions & 104 deletions

File tree

.planning/MILESTONES.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Milestones
22

3+
## v1.1 Docs, Pages & OpenClaw Positioning (Shipped: 2026-04-04)
4+
5+
**Phases completed:** 2 phases, 3 plans, 5 tasks
6+
7+
**Key accomplishments:**
8+
9+
- Restored deploy-docs.yml workflow from deleted commit, deploying Jekyll docs site with just-the-docs dark theme to stealinglight.github.io/StravaMCP
10+
- README rewritten with production-grade agent framework positioning, Why Go? comparison table, and OpenClaw/ZeroClaw ecosystem Mermaid diagram
11+
- Docs site updated with production-grade positioning, Why Go? table, and new OpenClaw/ZeroClaw integration guide page with ecosystem diagram and wiring config
12+
13+
---
14+
315
## v1.0 StravaMCP Go Rewrite (Shipped: 2026-04-01)
416

517
**Phases completed:** 3 phases, 8 plans, 18 tasks

.planning/PROJECT.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ A fast, self-contained Go binary that gives any MCP client full access to the St
1818
- ✓ File-based token store with automatic refresh persistence — v1.0
1919
- ✓ 11 MCP tools with full TypeScript feature parity — v1.0
2020
- ✓ Portfolio-quality README with badges, diagrams, tool reference — v1.0
21+
- ✓ GitHub Pages docs site with just-the-docs dark theme — v1.1 Phase 4
2122
- ✓ Production-grade positioning with Why Go? table, ecosystem diagram, integration guide — v1.1 Phase 5
2223
- ✓ Single-binary distribution via goreleaser with Homebrew — v1.0
2324
- ✓ Cross-platform builds (darwin/linux, amd64/arm64) — v1.0
@@ -44,12 +45,13 @@ A fast, self-contained Go binary that gives any MCP client full access to the St
4445

4546
## Context
4647

47-
- v1.0 shipped: 4,791 LOC Go across 5 packages (auth, config, server, strava, tools)
48+
- v1.1 shipped: 4,791 LOC Go across 5 packages (auth, config, server, strava, tools)
4849
- 80+ tests passing, all packages covered
4950
- Tech stack: Go 1.25, mcp-go v0.46.0, goreleaser v2, GitHub Actions
50-
- Part of the RustyClaw/ZeroClaw ecosystem (local MCP servers for Strava, Slack, video, web-research)
51+
- Part of the OpenClaw/ZeroClaw ecosystem (local MCP servers for Strava, Slack, video, web-research)
5152
- All TypeScript/Lambda code removed — clean Go-only repository
52-
- Portfolio piece with polished README, badges, Mermaid diagrams
53+
- Production-grade README with Why Go? performance table, ecosystem Mermaid diagram, agent framework integration guide
54+
- GitHub Pages docs site live at stealinglight.github.io/StravaMCP with just-the-docs dark theme
5355
- The muscle group heat map renderer is being built separately and will integrate in a future milestone
5456

5557
## Constraints
@@ -76,18 +78,16 @@ A fast, self-contained Go binary that gives any MCP client full access to the St
7678
| Module path github.com/Stealinglight/StravaMCP | Enables `go install` and proper Go module ecosystem integration | ✓ Phase 3 |
7779
| goreleaser v2 with homebrew_casks | Cross-platform binary distribution + Homebrew tap | ✓ Phase 3 |
7880
| ISC License | Simple permissive license for open source distribution | ✓ Phase 3 |
81+
| Restore GitHub Pages from deleted commit | Exact workflow restoration safer than recreation from scratch | ✓ Phase 4 |
82+
| Production-grade positioning over portfolio framing | Agent framework users need credibility signals, not portfolio language | ✓ Phase 5 |
83+
| Estimated performance numbers with disclaimer | Avoids building Python/JS equivalents for benchmarks while still showing Go advantages | ✓ Phase 5 |
7984
| Add segments/routes/gear/laps | Expand beyond current 11 tools to comprehensive Strava coverage | — v2.0 |
8085
| Heat map as future milestone | Separate project, don't couple it to the core rewrite | — v2.0+ |
8186

82-
## Current Milestone: v1.1 Docs, Pages & OpenClaw Positioning
87+
## Completed Milestones
8388

84-
**Goal:** Fix GitHub Pages deployment, position StravaMCP as a high-performance Go MCP server for OpenClaw/ZeroClaw agent frameworks, and highlight Go speed advantages over Python/JavaScript MCPs.
85-
86-
**Target features:**
87-
- Fix GitHub Pages deployment workflow (deleted during v1.0 cleanup)
88-
- Update README with OpenClaw/ZeroClaw ecosystem positioning and Go performance messaging
89-
- Update docs/ site with OpenClaw compatibility and performance claims
90-
- Position as production-grade MCP server for agent frameworks, not just a portfolio piece
89+
- **v1.0 Go Rewrite** (2026-04-01) — Full Go rewrite with 11 MCP tools, OAuth, goreleaser
90+
- **v1.1 Docs, Pages & OpenClaw Positioning** (2026-04-04) — GitHub Pages restoration, production-grade positioning, integration guide
9191

9292
## Current State
9393

@@ -111,4 +111,4 @@ This document evolves at phase transitions and milestone boundaries.
111111
4. Update Context with current state
112112

113113
---
114-
*Last updated: 2026-04-04 after Phase 5 completion (v1.1 milestone)*
114+
*Last updated: 2026-04-04 after v1.1 milestone completion*

.planning/RETROSPECTIVE.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,63 @@
4444

4545
---
4646

47+
## Milestone: v1.1 — Docs, Pages & OpenClaw Positioning
48+
49+
**Shipped:** 2026-04-04
50+
**Phases:** 2 | **Plans:** 3
51+
52+
### What Was Built
53+
- Restored GitHub Pages deployment workflow from deleted commit, docs site live at stealinglight.github.io/StravaMCP
54+
- README rewritten with production-grade hero tagline, reliability-focused feature bullets, Why Go? performance comparison table
55+
- Agent Framework Integration section with OpenClaw/ZeroClaw ecosystem Mermaid diagram and JSON config snippet
56+
- New docs/integration.md page with ecosystem explainer, wiring configuration, 3 example workflows
57+
- docs/index.md mirrored with matching tagline, features, and performance table
58+
59+
### What Worked
60+
- Wave dependency (README first → docs second) ensured docs could mirror canonical README content accurately
61+
- Human-verify checkpoint at Task 3 of Plan 02 gated deployment verification — right pattern for docs-only phases
62+
- Tone sweep with banned word list (portfolio, showcase, demo, etc.) systematically enforced positioning shift
63+
- UI-SPEC content contract defined exact copy for each section — executor had zero ambiguity
64+
65+
### What Was Inefficient
66+
- REQUIREMENTS.md checkboxes for MSG-01 through MSG-04 weren't auto-updated during execution — required manual fix during milestone completion
67+
- 05-01-SUMMARY.md frontmatter didn't list requirements_completed for MSG-01/MSG-02 — caused "partial" status in 3-source cross-reference even though verification confirmed them
68+
69+
### Patterns Established
70+
- Content Overlap Matrix in UI-SPEC for multi-file messaging consistency (README ↔ docs)
71+
- Banned word enforcement as a verification check (grep-based, zero tolerance)
72+
- Estimated performance numbers with explicit disclaimer footnote — avoids benchmark scope while showing Go advantages
73+
74+
### Key Lessons
75+
1. For docs-only phases, the security gate passes trivially — SECURITY.md still gets created for audit trail consistency
76+
2. Wave structure for content phases should always have the canonical source (README) in Wave 1 and derived content (docs site) in Wave 2
77+
3. SUMMARY frontmatter `requirements_completed` should be enforced by the executor — the verifier shouldn't be the first to catch missing entries
78+
79+
### Cost Observations
80+
- Model mix: opus for execution, sonnet for verification and integration check
81+
- 2 phases completed in single session
82+
- Notable: docs-only milestone completed in ~20 minutes of wall clock time
83+
84+
---
85+
4786
## Cross-Milestone Trends
4887

4988
### Process Evolution
5089

5190
| Milestone | Phases | Plans | Key Change |
5291
|-----------|--------|-------|------------|
5392
| v1.0 | 3 | 8 | Initial milestone — established GSD workflow with strict phase dependencies |
93+
| v1.1 | 2 | 3 | Docs-only milestone — UI-SPEC content contracts, banned word enforcement, wave-ordered content sourcing |
5494

5595
### Cumulative Quality
5696

5797
| Milestone | Tests | Packages | Zero-Dep Additions |
5898
|-----------|-------|----------|-------------------|
5999
| v1.0 | 80+ | 5 | 3 (mcp-go, browser, sync) |
100+
| v1.1 | 80+ (unchanged) | 5 (unchanged) | 0 (docs-only) |
60101

61102
### Top Lessons (Verified Across Milestones)
62103

63104
1. Set canonical identifiers (module paths, package names) in the first phase
64105
2. Raw JSON pass-through beats typed structs for API wrapper tools consumed by LLMs
106+
3. For multi-file messaging, update the canonical source first (Wave 1), then derive — prevents drift

.planning/ROADMAP.md

Lines changed: 17 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
## Milestones
44

5-
- v1.0 **Go Rewrite** - Phases 1-3 (shipped 2026-04-01)
6-
- v1.1 **Docs, Pages & OpenClaw Positioning** - Phases 4-5 (in progress)
5+
- **v1.0 Go Rewrite** Phases 1-3 (shipped 2026-04-01)
6+
- **v1.1 Docs, Pages & OpenClaw Positioning** Phases 4-5 (shipped 2026-04-04)
77

88
## Phases
99

@@ -14,109 +14,35 @@
1414
Decimal phases appear between their surrounding integers in numeric order.
1515

1616
<details>
17-
<summary>v1.0 Go Rewrite (Phases 1-3) - SHIPPED 2026-04-01</summary>
18-
19-
- [x] **Phase 1: Foundation and Auth** - Go project scaffold, file-based token store, OAuth browser flow, Strava HTTP client, and MCP server wiring
20-
- [x] **Phase 2: Tool Suite** - Port all 11 existing Strava tools with full feature parity (activities, athlete, streams, clubs, uploads)
21-
- [x] **Phase 3: Polish and Distribution** - Portfolio-quality README and single-binary cross-platform release pipeline
22-
23-
### Phase 1: Foundation and Auth
24-
**Goal**: A running MCP server binary that authenticates with Strava and can make API calls, with all infrastructure ready for tool registration
25-
**Depends on**: Nothing (first phase)
26-
**Requirements**: INFRA-01, INFRA-02, INFRA-03, INFRA-04, INFRA-05
27-
**Success Criteria** (what must be TRUE):
28-
1. Running `go build` produces a single binary with no runtime dependencies
29-
2. Running `strava-mcp auth` opens a browser, completes OAuth, and persists tokens to ~/.strava/tokens.json
30-
3. The MCP server connects via stdio and responds to MCP protocol handshake (list tools returns empty tool set)
31-
4. Token auto-refresh works transparently -- an expired access token triggers refresh without user intervention, and concurrent refresh attempts are coalesced into one
32-
5. All logging goes to stderr only -- stdout carries exclusively MCP JSON-RPC traffic
33-
**Plans**: 2 plans
34-
35-
Plans:
36-
- [x] 01-01-PLAN.md -- Go project scaffold, config loader, token store, and MCP server shell
37-
- [x] 01-02-PLAN.md -- Strava HTTP client with auto-refresh and OAuth browser flow
38-
39-
### Phase 2: Tool Suite
40-
**Goal**: Users can access all core Strava data through 11 MCP tools matching the existing TypeScript feature set
41-
**Depends on**: Phase 1
42-
**Requirements**: ACT-01, ACT-02, ACT-03, ACT-04, ACT-05, ATH-01, ATH-02, STR-01, CLB-01, UPL-01, UPL-02
43-
**Success Criteria** (what must be TRUE):
44-
1. User can list, view, create, and update activities through MCP tool calls
45-
2. User can retrieve heart rate/power zones, time-series streams, and athlete statistics
46-
3. User can upload activity files (GPX/TCX/FIT) via multipart form data and check upload status
47-
4. User can list club activities with pagination
48-
5. All 11 tool descriptions match the existing TypeScript versions in detail and quality (descriptions are the product UI for LLMs)
49-
**Plans**: 3 plans
50-
51-
Plans:
52-
- [x] 02-01-PLAN.md -- Shared helpers (formatResponse, handleToolError) and 5 activity tools
53-
- [x] 02-02-PLAN.md -- Athlete, streams, and club tools (4 tools)
54-
- [x] 02-03-PLAN.md -- PostMultipart client method, upload tools, and RegisterAll wiring (2 tools + final wiring)
55-
56-
### Phase 3: Polish and Distribution
57-
**Goal**: The project is portfolio-ready with a polished README and frictionless installation via single-binary releases
58-
**Depends on**: Phase 2
59-
**Requirements**: DOCS-01, DOCS-02
60-
**Success Criteria** (what must be TRUE):
61-
1. README includes badges, architecture diagram, complete tool reference, quick-start guide, and visual polish worthy of a portfolio piece
62-
2. `goreleaser` produces cross-platform binaries (macOS, Linux) from a single GitHub Actions workflow
63-
3. A new user can go from zero to working MCP server by following only the README instructions
64-
**Plans**: 3 plans
65-
66-
Plans:
67-
- [x] 03-01-PLAN.md -- Module path migration, legacy cleanup, LICENSE, .gitignore
68-
- [x] 03-02-PLAN.md -- goreleaser config, release workflow, CONTRIBUTING.md, repo metadata
69-
- [x] 03-03-PLAN.md -- Portfolio-quality README and docs site rewrite
17+
<summary>✅ v1.0 Go Rewrite (Phases 1-3) — SHIPPED 2026-04-01</summary>
7018

71-
</details>
72-
73-
### v1.1 Docs, Pages & OpenClaw Positioning (In Progress)
74-
75-
**Milestone Goal:** Fix GitHub Pages deployment, position StravaMCP as a high-performance Go MCP server for OpenClaw/ZeroClaw agent frameworks, and highlight Go speed advantages over Python/JavaScript MCPs.
19+
- [x] **Phase 1: Foundation and Auth** — Go project scaffold, file-based token store, OAuth browser flow, Strava HTTP client, and MCP server wiring
20+
- [x] **Phase 2: Tool Suite** — Port all 11 existing Strava tools with full feature parity (activities, athlete, streams, clubs, uploads)
21+
- [x] **Phase 3: Polish and Distribution** — Portfolio-quality README and single-binary cross-platform release pipeline
7622

77-
- [ ] **Phase 4: GitHub Pages Restoration** - Fix broken deployment workflow and verify docs site renders correctly
78-
- [ ] **Phase 5: OpenClaw Positioning & Performance Messaging** - Update README and docs with agent framework positioning and Go performance advantages
23+
See `.planning/milestones/v1.0-ROADMAP.md` for full phase details.
7924

80-
## Phase Details
25+
</details>
8126

82-
### Phase 4: GitHub Pages Restoration
83-
**Goal**: The docs site is live and rendering correctly at stealinglight.github.io/StravaMCP
84-
**Depends on**: Phase 3 (docs site content created in v1.0)
85-
**Requirements**: PAGES-01, PAGES-02
86-
**Success Criteria** (what must be TRUE):
87-
1. Pushing to main triggers a GitHub Actions workflow that deploys docs/ to GitHub Pages
88-
2. stealinglight.github.io/StravaMCP loads and renders the docs site with just-the-docs theme and dark mode
89-
3. All existing docs site pages (tool reference, quick start, architecture) render without broken links or missing assets
90-
**Plans**: 1 plan
27+
<details>
28+
<summary>✅ v1.1 Docs, Pages & OpenClaw Positioning (Phases 4-5) — SHIPPED 2026-04-04</summary>
9129

92-
Plans:
93-
- [x] 04-01-PLAN.md -- Restore deploy-docs.yml workflow and verify live site rendering
94-
**UI hint**: yes
30+
- [x] **Phase 4: GitHub Pages Restoration** — Fix broken deployment workflow and verify docs site renders correctly
31+
- [x] **Phase 5: OpenClaw Positioning & Performance Messaging** — Update README and docs with agent framework positioning and Go performance advantages
9532

96-
### Phase 5: OpenClaw Positioning & Performance Messaging
97-
**Goal**: StravaMCP is positioned as a production-grade, high-performance MCP server for agent frameworks, not just a portfolio piece
98-
**Depends on**: Phase 4 (docs site must be live before updating its content)
99-
**Requirements**: MSG-01, MSG-02, MSG-03, MSG-04
100-
**Success Criteria** (what must be TRUE):
101-
1. README contains an OpenClaw/ZeroClaw ecosystem section that explains how StravaMCP fits as a stdio MCP server within agent framework architectures
102-
2. README includes concrete Go performance claims (sub-second startup, low memory footprint, small binary size) contrasted against typical Python/JavaScript MCP servers
103-
3. Docs site has a dedicated OpenClaw/ZeroClaw compatibility page or section with integration instructions (how to wire StravaMCP into an agent)
104-
4. The overall project tone across README and docs reads as "production-grade MCP server" rather than "portfolio project" -- language emphasizes reliability, performance, and agent framework integration
105-
**Plans**: 2 plans
33+
See `.planning/milestones/v1.1-ROADMAP.md` for full phase details.
10634

107-
Plans:
108-
- [x] 05-01-PLAN.md -- README overhaul: hero tagline, features, Why Go? table, Agent Framework Integration section
109-
- [x] 05-02-PLAN.md -- Docs site: index.md update, new integration.md page, _config.yml description
35+
</details>
11036

11137
## Progress
11238

11339
**Execution Order:**
114-
Phases execute in numeric order: 4 -> 5
40+
Phases execute in numeric order.
11541

11642
| Phase | Milestone | Plans Complete | Status | Completed |
11743
|-------|-----------|----------------|--------|-----------|
11844
| 1. Foundation and Auth | v1.0 | 2/2 | Complete | 2026-03-27 |
11945
| 2. Tool Suite | v1.0 | 3/3 | Complete | 2026-03-27 |
12046
| 3. Polish and Distribution | v1.0 | 3/3 | Complete | 2026-04-01 |
121-
| 4. GitHub Pages Restoration | v1.1 | 0/1 | Planning complete | - |
122-
| 5. OpenClaw Positioning | v1.1 | 0/2 | Planning complete | - |
47+
| 4. GitHub Pages Restoration | v1.1 | 1/1 | Complete | 2026-04-03 |
48+
| 5. OpenClaw Positioning | v1.1 | 2/2 | Complete | 2026-04-04 |

.planning/STATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ milestone: v1.1
44
milestone_name: Docs, Pages & OpenClaw Positioning
55
status: executing
66
stopped_at: Phase 5 UI-SPEC approved
7-
last_updated: "2026-04-04T20:49:42.364Z"
7+
last_updated: "2026-04-04T21:00:48.643Z"
88
last_activity: 2026-04-04
99
progress:
1010
total_phases: 2
File renamed without changes.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
# Requirements Archive: v1.1 Docs, Pages & OpenClaw Positioning
2+
3+
**Archived:** 2026-04-04
4+
**Status:** SHIPPED
5+
6+
For current requirements, see `.planning/REQUIREMENTS.md`.
7+
8+
---
9+
110
# Requirements: StravaMCP v1.1 — Docs, Pages & OpenClaw Positioning
211

312
**Defined:** 2026-04-01

0 commit comments

Comments
 (0)