bms-speckit-plugin 6.6.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -169,6 +169,8 @@ Grep source files for patterns where a value of one type is used where another t
|
|
|
169
169
|
|
|
170
170
|
## Phase D: UX/UI Review
|
|
171
171
|
|
|
172
|
+
### D1. Functional UX
|
|
173
|
+
|
|
172
174
|
1. Check every user-facing operation has:
|
|
173
175
|
- Loading/progress indication for async operations
|
|
174
176
|
- Actionable error messages (what went wrong + what to do)
|
|
@@ -184,6 +186,121 @@ Grep source files for patterns where a value of one type is used where another t
|
|
|
184
186
|
4. Check for empty states (no data, first use, error state)
|
|
185
187
|
5. Fix any missing feedback or poor UX patterns
|
|
186
188
|
|
|
189
|
+
### D2. Brand Consistency (app name + identity)
|
|
190
|
+
|
|
191
|
+
The application's name and identity must be consistent across every entry point. Grep the codebase for every place the app name can appear and verify they all match:
|
|
192
|
+
|
|
193
|
+
1. **Collect every app-name occurrence:**
|
|
194
|
+
- `package.json` → `name` field and `description` field
|
|
195
|
+
- HTML `<title>` tag (in `index.html`, `_document.tsx`, layout files)
|
|
196
|
+
- `<meta name="description">`, `<meta property="og:title">`, `<meta property="og:description">`
|
|
197
|
+
- Navbar / header component — grep for the component that renders the top bar, find the brand text
|
|
198
|
+
- Login / signup page — grep for the component that renders auth screens
|
|
199
|
+
- Footer (if present)
|
|
200
|
+
- Manifest files (`manifest.json`, `site.webmanifest`) → `name`, `short_name`
|
|
201
|
+
- Service worker registration names
|
|
202
|
+
- README.md title
|
|
203
|
+
- Environment variables with "APP_NAME", "BRAND", "PROJECT_NAME"
|
|
204
|
+
|
|
205
|
+
2. **Verify all occurrences match the spec** — the app name in `specs/*/spec.md` is the source of truth. If the spec says "BMS Patient Dashboard" but the navbar shows "My App" and the login page shows "Dashboard", fix all three to match the spec.
|
|
206
|
+
|
|
207
|
+
3. **Flag placeholder/starter names** — these are signs of unfinished work:
|
|
208
|
+
- `"My App"`, `"App"`, `"React App"`, `"Vite App"`, `"Next App"`, `"Create React App"`
|
|
209
|
+
- `"Hello World"`, `"TODO"`, `"Placeholder"`, `"Example"`, `"Test"`, `"Demo"`
|
|
210
|
+
- `"Untitled"`, `"New Project"`, `"localhost"`
|
|
211
|
+
- Framework defaults left unchanged
|
|
212
|
+
- Fix by replacing with the actual app name from the spec
|
|
213
|
+
|
|
214
|
+
4. **Check meta description quality** — the `<meta name="description">` should describe the system's purpose in one sentence, not repeat the name or contain placeholder text
|
|
215
|
+
|
|
216
|
+
### D3. Login / Auth Page Content
|
|
217
|
+
|
|
218
|
+
The login page is usually the first thing a user sees and sets the tone for the entire application. It must clearly identify the system and provide useful context.
|
|
219
|
+
|
|
220
|
+
1. **System identification:**
|
|
221
|
+
- The app name is prominently displayed (matches navbar)
|
|
222
|
+
- There is a subtitle or tagline explaining what the system is for (e.g., "Hospital patient management for BMS clinics")
|
|
223
|
+
- A logo or brand mark is present (or, if not, flag as "missing visual identity")
|
|
224
|
+
|
|
225
|
+
2. **Form quality:**
|
|
226
|
+
- All input fields have visible labels (not just placeholders)
|
|
227
|
+
- Password field has show/hide toggle if appropriate
|
|
228
|
+
- Submit button has a clear action label (not "Submit" — prefer "Sign In", "Log In", "Continue")
|
|
229
|
+
- Form has proper error display area
|
|
230
|
+
- Loading state during authentication
|
|
231
|
+
|
|
232
|
+
3. **Helpful context:**
|
|
233
|
+
- "Forgot password" link if password reset is supported (or an explicit "Contact admin for password reset" message)
|
|
234
|
+
- Support contact info or help link
|
|
235
|
+
- Version number or build info in a subtle location (footer, corner) — helps with support tickets
|
|
236
|
+
|
|
237
|
+
4. **Placeholder / demo content to flag and fix:**
|
|
238
|
+
- `"username@example.com"` as a default value
|
|
239
|
+
- `"password123"` or any default password
|
|
240
|
+
- Copy like `"Welcome to our amazing app"` without substance
|
|
241
|
+
- Empty or generic headlines like `"Login"` with no context
|
|
242
|
+
- Background images from stock libraries that were not replaced
|
|
243
|
+
- "Built with Create React App" or similar framework attributions in prominent positions
|
|
244
|
+
|
|
245
|
+
### D4. Navbar / Header Consistency
|
|
246
|
+
|
|
247
|
+
1. **App name / logo:**
|
|
248
|
+
- The navbar displays the app name prominently on the left (or per the design system's convention)
|
|
249
|
+
- Clicking the name/logo returns to the home/dashboard route
|
|
250
|
+
- The name matches what's shown on the login page
|
|
251
|
+
|
|
252
|
+
2. **Navigation items:**
|
|
253
|
+
- Every nav item has a clear, descriptive label (not `"Page 1"`, `"Item 1"`, `"Menu"`, `"Link"`)
|
|
254
|
+
- Active route is visually indicated
|
|
255
|
+
- User identity/avatar is visible if logged in
|
|
256
|
+
- Sign-out / account menu is accessible
|
|
257
|
+
|
|
258
|
+
3. **Responsive behavior:**
|
|
259
|
+
- On mobile: hamburger menu or drawer replaces horizontal nav
|
|
260
|
+
- Touch targets are adequate
|
|
261
|
+
|
|
262
|
+
### D5. Professional Layout & Information Density
|
|
263
|
+
|
|
264
|
+
Professional healthcare/enterprise applications should feel deliberate and informative, not generic. Check for:
|
|
265
|
+
|
|
266
|
+
1. **Layout structure:**
|
|
267
|
+
- Every page has a defined structure: header, main content, footer (or equivalent)
|
|
268
|
+
- Consistent spacing/padding across pages (use design tokens, not hardcoded pixel values)
|
|
269
|
+
- No raw unstyled content (bare `<h1>` on white background with no container)
|
|
270
|
+
|
|
271
|
+
2. **Anti-patterns to flag and fix:**
|
|
272
|
+
- Default framework colors left unchanged (default React blue, default Material UI purple, default Tailwind colors in brand positions)
|
|
273
|
+
- Lorem ipsum text anywhere in production routes
|
|
274
|
+
- "Hello World", "Welcome to Next.js", "Edit app/page.tsx" type starter content
|
|
275
|
+
- Single-page apps with just a form and no supporting information
|
|
276
|
+
- Dashboards with no actual data shown — just empty widgets or placeholders
|
|
277
|
+
- Pages with inconsistent fonts (multiple font families without a system)
|
|
278
|
+
|
|
279
|
+
3. **Informative density:**
|
|
280
|
+
- Dashboard pages show meaningful data, not empty cards
|
|
281
|
+
- Empty states explain what would appear when data exists (e.g., "No patients found. Patients admitted today will appear here.")
|
|
282
|
+
- Key numbers/metrics have context (not just "42" — "42 patients active today")
|
|
283
|
+
- Data tables have column headers, sort indicators, and result counts
|
|
284
|
+
- Lists include counts ("Showing 10 of 145 results")
|
|
285
|
+
|
|
286
|
+
4. **Typography hierarchy:**
|
|
287
|
+
- There is a visible distinction between page title (h1), section titles (h2), subsections (h3)
|
|
288
|
+
- Body text has adequate line height (1.4-1.7)
|
|
289
|
+
- Font sizes follow a scale, not arbitrary pixel values
|
|
290
|
+
|
|
291
|
+
5. **Color usage:**
|
|
292
|
+
- Brand colors are defined and used consistently (check for a theme config or CSS variables)
|
|
293
|
+
- Semantic colors for state (success/warning/error/info) are defined once and reused
|
|
294
|
+
- No random inline `style={{color: '#ff0000'}}` — flag and replace with theme tokens
|
|
295
|
+
|
|
296
|
+
6. **Visual polish quick checks:**
|
|
297
|
+
- Favicon is set and not the framework default
|
|
298
|
+
- Page has a proper `<title>` (not "localhost" or framework default)
|
|
299
|
+
- Loading spinners are styled to match the brand
|
|
300
|
+
- Buttons have consistent sizing and states (hover/focus/active/disabled)
|
|
301
|
+
|
|
302
|
+
For each issue found, fix it by referencing the actual app name/description from `specs/*/spec.md` and the brand tokens from the design system (or create minimal tokens if missing).
|
|
303
|
+
|
|
187
304
|
## Phase E: Accessibility
|
|
188
305
|
|
|
189
306
|
1. Check images have alt text
|
|
@@ -554,6 +671,16 @@ After completing all phases, provide a summary report:
|
|
|
554
671
|
- [ ] Error messages are actionable
|
|
555
672
|
- [ ] Loading states present
|
|
556
673
|
- [ ] Empty states handled
|
|
674
|
+
- [ ] Brand consistency: app name matches across package.json, title, meta, navbar, login, manifest
|
|
675
|
+
- [ ] No placeholder app names (My App, React App, Hello World, etc.)
|
|
676
|
+
- [ ] Login page identifies the system with name + subtitle explaining purpose
|
|
677
|
+
- [ ] Login page has no default/demo credentials or lorem ipsum
|
|
678
|
+
- [ ] Navbar displays app name and has descriptive nav labels (no Page 1, Item 1)
|
|
679
|
+
- [ ] Layout has defined structure (header/main/footer) with consistent spacing
|
|
680
|
+
- [ ] No default framework colors in brand positions
|
|
681
|
+
- [ ] Dashboards show real data or informative empty states (no empty placeholder cards)
|
|
682
|
+
- [ ] Typography hierarchy visible (h1 → h2 → h3)
|
|
683
|
+
- [ ] Favicon and page title are customized (not framework defaults)
|
|
557
684
|
|
|
558
685
|
### Accessibility
|
|
559
686
|
- [ ] Images have alt text
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bms-speckit-plugin",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.7.0",
|
|
4
4
|
"description": "Chain-orchestrated development pipeline: /bms-speckit takes requirements and runs brainstorm → constitution → specify → plan → tasks → analyze → implement → verify with per-step error handling",
|
|
5
5
|
"files": [
|
|
6
6
|
".claude-plugin/",
|
|
@@ -185,6 +185,7 @@ After the subagent completes, update tasks 1-8 as completed using TaskUpdate, th
|
|
|
185
185
|
- Add unit tests that actually execute data transformation functions and verify the output type and shape
|
|
186
186
|
- **SQL validation:** before writing any SQL statement, verify the exact table and column names exist. Use `bms-session-mcp-server` tools (`list_tables`, `describe_table`) or `mcp__bms-knowledge-mcp__search_knowledge` (hosxp collection) to confirm every field reference. Never guess column names. After writing a query, test it with `query` tool using `EXPLAIN` or `LIMIT 0` to confirm it parses and executes.
|
|
187
187
|
- **Business logic correctness:** before writing any SQL, state out loud what business question the query is supposed to answer. Then use `mcp__bms-knowledge-mcp__search_knowledge` on the `hosxp` collection to verify: (a) you're using the canonical table for this data (e.g., `ovst` vs `opd`), (b) you're applying the correct soft-delete/status filter (e.g., `vstatus != 'C'`), (c) you're using the right date column, (d) you're joining on the right key (hn vs vn vs an). For multi-table relationships use `graph_search` instead. For reporting queries, also check `moph` or `nhso` collections for regulatory inclusion/exclusion rules. Cite the HOSxP convention in a code comment (e.g., `// HOSxP: use vstdate not service_date`).
|
|
188
|
+
- **Brand & layout quality (for UI tasks):** whenever a task creates or modifies the navbar, login page, or page layout: source the app name and description from `specs/*/spec.md` (never invent one or use framework defaults); make sure the navbar displays the app name, the login page identifies the system with a descriptive subtitle, nav items have clear labels (not "Page 1"), layouts have a header/main structure with consistent spacing, and typography uses a visible hierarchy. No Lorem ipsum, no "Hello World", no default framework colors in brand positions, no placeholder credentials in login forms.
|
|
188
189
|
2. **INLINE QC** — immediately run: build, lint, ALL tests, security quick scan, UX check
|
|
189
190
|
3. **INTEGRATION TEST (real database)** — for every task that touches database queries or data-dependent business logic, run an integration test that:
|
|
190
191
|
- Uses the real `bms-session-mcp-server` `query` tool to execute the feature's actual SQL against the real HOSxP database (not mocks)
|
|
@@ -211,7 +212,7 @@ After the subagent completes, update tasks 1-8 as completed using TaskUpdate, th
|
|
|
211
212
|
- **Focus areas:**
|
|
212
213
|
- **A. Security deep scan** — `npm audit` / `pip audit`, auth flow review, CORS, secrets across all files
|
|
213
214
|
- **B. Dependencies** — outdated packages, vulnerable deps, unused packages
|
|
214
|
-
- **C. UX consistency** — consistent error handling and feedback patterns across ALL features, empty states, responsive design
|
|
215
|
+
- **C. UX consistency & brand polish** — consistent error handling and feedback patterns across ALL features, empty states, responsive design. Brand consistency: app name matches across package.json, HTML title, meta tags, navbar, login page, manifest (all sourced from spec). No placeholder names (My App, React App, Hello World). Login page identifies the system with name + descriptive subtitle, real form labels, no demo credentials. Navbar has descriptive nav labels. Professional layout: defined structure, consistent spacing, no default framework colors in brand positions, dashboards show real data or informative empty states, typography hierarchy, customized favicon and page title.
|
|
215
216
|
- **D. Accessibility** — alt text, form labels, keyboard nav, heading hierarchy
|
|
216
217
|
- **E. Integration check** — verify all components work together end-to-end
|
|
217
218
|
- **F. Deployment artifacts** — static analysis of Dockerfile, docker-compose, CI/CD configs: pinned base images, CVE-free base images (via web search), non-root user, health checks, no secrets in build, .dockerignore coverage (skipped if no deployment files exist)
|