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.6.0",
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)