Blame

13ae77 Claude (Dev) 2026-03-13 02:04:38
[mcp] Clarify wiki documentation acceptance criteria
1
---
d432f9 Claude (Dev) 2026-03-13 01:51:28
[mcp] Port Phase 3 tasks to wiki
2
## How to read this document
3
4
- **Dependencies** list task IDs that must be complete before this task starts
5
- **Parallel group** identifies tasks that can run simultaneously within a phase
6
- **Target** identifies which repo and branch the work goes into
7
- Tasks are numbered `P{phase}-{sequence}` (e.g., P0-3)
8
- Acceptance criteria are binary — pass or fail, no judgment calls
9
10
---
11
12
## Phase 3: Frontend
13
14
**Goal:** SPA for user dashboard, wiki settings, and MCP connection instructions.
15
16
### P3-1: SPA Scaffold
17
18
**Parallel group:** Phase 3 start
19
**Dependencies:** None (can start anytime — just needs API from P2-4)
20
**Target:** `wikibot-io` repo, `feat/P3-1-spa-scaffold`
21
22
**Description:**
23
Scaffold the frontend application. Choose framework (React or Svelte — manager decides based on ecosystem maturity and team capabilities). Set up build pipeline with Vite, TypeScript, and basic routing.
24
25
**Deliverables:**
26
- `app/frontend/` — scaffolded SPA with routing
27
- Build pipeline (Vite + TypeScript)
28
- Framework decision documented
29
- Basic layout: header, sidebar, content area
30
- Dev server that proxies API requests to the backend
31
32
**Acceptance criteria:**
33
- [ ] `npm run dev` starts local dev server
34
- [ ] `npm run build` produces production bundle
35
- [ ] TypeScript compiles without errors
36
- [ ] Basic routing works (dashboard, login, settings pages as empty shells)
37
- [ ] Framework decision documented with rationale
38
39
---
40
41
### P3-2: Auth Flow
42
43
**Parallel group:** Phase 3
44
**Dependencies:** P3-1, P2-2
45
**Target:** `wikibot-io` repo, `feat/P3-2-auth-flow`
46
47
**Description:**
48
Frontend authentication: login page with OAuth provider buttons, callback handling, JWT storage, authenticated API requests, logout.
49
50
**Deliverables:**
51
- Login page with Google (and other configured) OAuth buttons
52
- OAuth callback handler (receives auth code, exchanges for platform JWT)
53
- JWT stored in httpOnly cookie or localStorage (decide and document tradeoffs)
54
- API client module that attaches JWT to requests
55
- Protected route wrapper (redirects to login if no valid JWT)
56
57
**Acceptance criteria:**
58
- [ ] Login redirects to WorkOS AuthKit
59
- [ ] Callback exchanges code for JWT
60
- [ ] Authenticated API requests succeed
61
- [ ] Unauthenticated access redirects to login
62
- [ ] Logout clears JWT
63
- [ ] Token refresh works (if implemented)
64
65
---
66
67
### P3-3: Dashboard
68
69
**Parallel group:** Phase 3
70
**Dependencies:** P3-1, P2-4
71
**Target:** `wikibot-io` repo, `feat/P3-3-dashboard`
72
73
**Description:**
74
User dashboard: list of wikis with metadata, create new wiki button and form.
75
76
**Deliverables:**
77
- Dashboard page: wiki list (name, page count, last accessed)
78
- Create wiki form (slug, display name, optional description)
79
- Empty state for new users
80
- Loading and error states
81
82
**Acceptance criteria:**
83
- [ ] Dashboard shows user's wikis
84
- [ ] Create wiki form validates slug (URL-safe characters, 3-30 chars)
85
- [ ] After creation, displays MCP token and connection instructions
86
- [ ] Wiki list links to wiki web UI and settings page
87
88
---
89
90
### P3-4: Wiki Settings
91
92
**Parallel group:** Phase 3
93
**Dependencies:** P3-3
94
**Target:** `wikibot-io` repo, `feat/P3-4-wiki-settings`
95
96
**Description:**
97
Wiki settings page: rename wiki, regenerate MCP token, manage collaborators (invite by email, set role, revoke), delete wiki.
98
99
**Deliverables:**
100
- Settings page with tabbed sections (general, collaborators, danger zone)
101
- Collaborator management: invite form, list with role badges, revoke buttons
102
- Token regeneration with confirmation and one-time display
103
- Delete wiki with typed-slug confirmation
104
105
**Acceptance criteria:**
106
- [ ] Can rename wiki display name
107
- [ ] Can regenerate MCP token (shown once, confirmation required)
108
- [ ] Can invite collaborator by email with role selection
109
- [ ] Can change collaborator role
110
- [ ] Can revoke collaborator access
111
- [ ] Can delete wiki (requires typing slug to confirm)
112
113
---
114
115
### P3-5: MCP Connection Instructions
116
117
**Parallel group:** Phase 3
118
**Dependencies:** P3-3
119
**Target:** `wikibot-io` repo, `feat/P3-5-mcp-instructions`
120
121
**Description:**
122
Page showing how to connect MCP clients to the wiki. Copy-paste `claude mcp add` command with the user's token. Instructions for both Claude.ai (OAuth — just add the URL) and Claude Code (bearer token).
123
124
**Deliverables:**
125
- MCP connection page (accessible from dashboard and wiki settings)
126
- Copy-to-clipboard for `claude mcp add` command
127
- Instructions for Claude.ai (OAuth flow — add URL)
128
- Instructions for Claude Code (bearer token)
129
130
**Acceptance criteria:**
131
- [ ] `claude mcp add` command is correct and copyable
132
- [ ] Claude.ai instructions show the correct MCP endpoint URL
133
- [ ] Token is displayed (from creation) or "regenerate to see" if not first visit
134
135
---
136
137
### P3-6: Public Wiki Toggle
138
139
**Parallel group:** Phase 3
140
**Dependencies:** P3-4, P2-3
141
**Target:** `wikibot-io` repo, `feat/P3-6-public-toggle`
142
143
**Description:**
144
Toggle in wiki settings to make a wiki publicly readable. When enabled, unauthenticated users can view (but not edit) the wiki via the web UI.
145
146
**Deliverables:**
147
- Toggle switch in wiki settings
148
- API call to update wiki `is_public` flag
149
- Frontend handles public wiki URLs (no auth redirect)
150
151
**Acceptance criteria:**
152
- [ ] Toggle updates DynamoDB `is_public` flag
153
- [ ] Public wiki viewable without login
154
- [ ] Public wiki not editable without login
155
- [ ] Private wiki still requires auth
156
157
---
158
159
### P3-7: Static Hosting
160
161
**Parallel group:** Phase 3 (parallel with P3-1 — infrastructure can be set up early)
162
**Dependencies:** P3-1 (needs build output)
163
**Target:** `wikibot-io` repo, `feat/P3-7-static-hosting`
164
165
**Description:**
166
S3 bucket + CloudFront distribution for serving the SPA. Pulumi resources.
167
168
**Deliverables:**
169
- `infra/components/frontend.py` — S3 bucket, CloudFront distribution, OAI
170
- Build and deploy script (upload to S3, invalidate CloudFront)
171
- Custom domain: `wikibot.io` (root domain serves SPA)
172
173
**Acceptance criteria:**
174
- [ ] SPA accessible at `https://wikibot.io/`
175
- [ ] CloudFront serves with correct cache headers
176
- [ ] SPA routing works (all paths serve index.html, client-side routing handles them)
177
- [ ] Build artifacts uploaded to S3
178
179
---
180
181
### P3-8: Phase 3 E2E Test
182
183
**Parallel group:** Phase 3 (final)
184
**Dependencies:** All P3 tasks
185
**Target:** `wikibot-io` repo, `feat/P3-8-e2e`
186
187
**Description:**
188
End-to-end user journey: signup → create wiki → connect MCP → use wiki → manage collaborators.
189
190
**Deliverables:**
191
- `tests/e2e/test_phase3.py`
13ae77 Claude (Dev) 2026-03-13 02:04:38
[mcp] Clarify wiki documentation acceptance criteria
192
- Results written to Dev/Phase 3 Summary per Agent Conventions documentation loop
d432f9 Claude (Dev) 2026-03-13 01:51:28
[mcp] Port Phase 3 tasks to wiki
193
194
**Acceptance criteria:**
195
- [ ] New user signs up via OAuth → lands on dashboard
196
- [ ] Creates wiki → sees MCP token and instructions
197
- [ ] Connects Claude.ai via MCP OAuth → can read/write notes
198
- [ ] Connects Claude Code via bearer token → can read/write notes
199
- [ ] Invites collaborator → collaborator can access wiki
200
- [ ] Public wiki toggle → anonymous read access works